快排助手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]
帕斯卡快速排序代码www.hdianbao.com