題目描述
給定輸入排序元素數目n和相應的n個元素,寫出程序,利用內排序算法中冒泡排序算法進行排序,並輸出排序過程中每趟及最後結果的相應序列。
輸入
共兩行,第一行給出排序元素數目n,第二行給出n個元素,1≤n≤400,每個元素值范圍為 [0,100000)
輸出
三個部分
第1部分為兩行,第1行輸出文字“Source:”,第2行給出原始序列;
第2部分,開始輸出文字“Bubble Sort:”,後續輸出簡單選擇排序過程;
第3部分,開始輸出文字“Result”,後續輸出排序結果。
樣例輸入
7
48 36 68 72 12 48 2
樣例輸出
Source:
(48 36 68 72 12 48 2)
Bubble Sort:
(36 48 68 12 48 2) 72
(36 48 12 48 2) 68 72
(36 12 48 2) 48 68 72
(12 36 2) 48 48 68 72
(12 2) 36 48 48 68 72
(2) 12 36 48 48 68 72
Result
(2 12 36 48 48 68 72)
#include<stdio.h>
#define N 400
void init(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
}
void bubberSort(int a[],int n)
{
int i,j,t,k=1;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
putchar('(');
for(j=0;j<n;j++)
{
if(j==0)
{
if(i!=n-1-1)
printf("%d",a[j]);
else printf("%d)",a[j]);
}
else if(j==n-1-k)
{
printf("%c%d",32,a[j]);
putchar(')');
}
else printf("%c%d",32,a[j]);
}
k++;
putchar('\n');
}
}
void myPrint(int a[],int n)
{
int i;
putchar('(');
for(i=0;i<n;i++)
{
if(i==n-1)
{
printf("%d",a[i]);
putchar(')');
}
else printf("%d%c",a[i],32);
}
printf("\n");
}
int main()
{
int a[N],n;
scanf("%d",&n);
init(a,n);
puts("Source: ");
myPrint(a,n);
puts("BubbleSort: ");
bubberSort(a,n);
puts("Result: ");
myPrint(a,n);
return 0;
getchar();
}
顯示答案錯誤
我的代碼怎麼修改才能通過啊
原題鏈接http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1063
題目說是Bubble Sort,但是在輸出的第二部分說用簡單的選擇排序。。
我按選擇排序寫了一個
var
a:array[1..1000] of longint;
i,j,n,k,l:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
writeln('Source:');
for i:=1 to n do write(a[i],' ');
writeln;
writeln('Bubble Sort:');
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
k:=a[i];a[i]:=a[j];a[j]:=k;
for l:=1 to n do write(a[l],' ');
writeln;
end;
writeln('Result');
for i:=1 to n do write(a[i],' ');
end.