題目描述
利用快速排序算法将讀入的N個數從小到大排序後輸出。
快速排序是資訊學競賽的必備算法之一。對于快速排序不是很了解的同學可以自行上網查詢相關資料,掌握後獨立完成。(C++選手請不要試圖使用STL,雖然你可以使用sort一遍過,但是你并沒有掌握快速排序算法的精髓。)
輸入輸出格式
輸入格式:
輸入檔案sort.in的第行為一個正整數N,第行包含N個空格隔開的正整數a[i],為你需要進行排序的數,資料保證了A[i]不超過。
輸出格式:
輸出檔案sort.out将給定的N個數從小到大輸出,數之間空格隔開,行末換行且無空格。
輸入輸出樣例
輸入樣例#1:
輸出樣例#1:
說明
對于%的資料,有N≤;
對于%的資料,有N≤。
題解:用快速排序的方法做就行了。
var i,n:longint;
a:array[..] of longint;
procedure qsort(l,r:longint);
var mid,i,j,t:longint;
begin
i:=l;j:=r;
mid:=a[(l+r) div ];
repeat
while a[i]<mid do inc(i);
while a[j]>mid do dec(j);
if i<=j then
begin
t:=a[i];a[i]:=a[j];a[j]:=t;
inc(i);dec(j);
end;
until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;
begin
readln(n);
for i:= to n do read(a[i]);
qsort(,n);
for i:= to n do write(a[i],' ');
end.