天天看點

快速排序-洛谷 1177

題目描述

利用快速排序算法将讀入的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.