快排助手kp-帕斯卡快速排序代码

帕斯卡快速排序代码

1、Pascal的快速​​排序代码

真正的快速排序应该是这样的(假设排序后的数组是a,快速排序是升序排序的):

procereqsort(l,h:integer); i,j,t,m:integer;

begin

i:=l;j:=h;

m:=a[(i+j)div2];//注意:this语句不能写成:m:=(i+j)div2;

repeat

whilea[i]

whilem ';

ifi<=jthen//注意,是'<=';

begin

t:=a[i];a[i]: =a[j ];a[j]:=t;

inc(i);dec(j);

end;

untili>j;//注意,大于符号,不是'>=';

ifi

ifj>lthenqsort(l,j);//这两行是递归搜索;

end;

可以在主程序中调用qsort进程。请接受!

2、Pascal 的快速排序

varx,i,j:integer;

begin

ifs>=ethenexit;

i:=s;j:=e;

x:=a[i];

while(x>a[j])and(j>i)dodec(j);

ifj>ithenbegin

a[i] := a[j];

i:=i+1;

end;

while(x i)doinc(i);

ifj> ithenbegin

a[j]:=a[i];

j:=j-1;

end;

untili=j;

a[i]:=x;

kp (s,i-1,a);kp(i+1,e,a);

vari,j,x,y:longint;

i: =l ;

j:=r;

x:=a[(l+r)div2];

whilea[i]

whilex

ifi<=jthen

开始快排助手kp}

y:=a[i];a[i]:=a[j];a[j]:=y;

inc(i);dec(j);

end;

untili>j;

ifl

ifi

end ;

vari,j,t,x:longint;

i:=l;j:=r;

x:=a[(i+j)shr1];

whilea[i]

whilea[j]>xdodec(j);

ifi<=jthen

begin

t:=a[i] ;a [i]:=a[j];a[j]:=t;

inc(i);dec(j);

end;

untili>j;

ifl

ifi

end;

帕斯卡快速排序代码www.hdianbao.com

您可能还会对下面的文章感兴趣: