快速排序pascal程序

题意

排序


分析

数据规模太大,建议使用快排。


var

n,i:longint;
a:array[0..100000]of longint;


procedure kp(l,r:longint);
var
i,j,mid:longint;
begin
    if l>=r then exit;
    i:=l;j:=r;mid:=a[(l+r) div 2];
    repeat
         while a[i]<mid do inc(i);
         while a[j]>mid do dec(j);
         if i<=j then
         begin
             a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
             inc(i);dec(j);
         end;
    until i>j;
    kp(l,j);
    kp(i,r)
end;


begin
    readln(n);
    for i:=1 to n do
    read(a[i]);
    kp(1,n);
    for i:=1 to n do
    write(a[i],' ');
end.
posted @ 2017-01-13 21:27  银叶草  阅读(357)  评论(0编辑  收藏  举报
Live2D