主题:请教快速排法
patrickforpascal
[专家分:150] 发布于 2007-11-16 10:01:00
书上的快速排序法都无法运行,请问有谁能给出快速排序的实用的PROCEDURE。
回复列表 (共1个回复)
沙发
abcwuhang [专家分:1840] 发布于 2007-11-16 20:56:00
在PP/DEMO文件夹中找的~~
program quicksort;
const max=10;
var data:array [1..max] of longint;
i:longint;
procedure qsort(l,r:longint);
var i,j,x,y:longint;
begin
i:=l;
j:=r;
x:=data[(l+r) div 2];
repeat
while data[i]<x do
inc(i);
while x<data[j] do
dec(j);
if i<=j then
begin
y:=data[i];
data[i]:=data[j];
data[j]:=y;
inc(i);
j:=j-1;
end;
until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;
begin
randomize;
writeln('First:');
for i:=1 to max do
begin
data[i]:=random(max);
write(data[i],' ');
if (i mod 10)=0 then writeln;
end;
qsort(1,max);
writeln('Last:');
for i:=1 to max do
begin
write(data[i],' ');
if (i mod 10)=0 then writeln;
end;
end.
我来回复