2007-08-22
标准快速排序算法 - [Algorithms]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://conoon.blogbus.com/logs/7858719.html
const n=10;
var
s:array[1..10] of integer;
k,l,m,o:integer;
procedure qsort(lx,rx:integer);
var
I,j,t:integer;
Begin
I:=lx;j:=rx;t:=s[I];
Repeat
While (s[j]>t) and (j>I) do
Begin
k:=k+1;
j:=j-1
end;
if I<j then
begin
s[I]:=s[j];I:=I+1;l:=l+1;
while (s[I]<t) and (I<j) do
begin
I:=I+1
End;
If I<j then
begin
S[j]:=s[I];j:=j-1
End;
End;
Until I=j;
S[I]:=t;I:=I+1;j:=j-1; o:=o+1;
writeln('第',o:3,'次排序的结果:');
for m:=1 to 10 do write(s[m]:5);
writeln;
If lx<j then qsort(lx,j);
If I<rx then qsort(I,rx)
End;{过程qsort结束}
Begin
Writeln('input 10 integer num:');
For m:=1 to n do read(s[m]);
K:=0;l:=1; o:=0;
Qsort(l,n);
Writeln('shu chu jie guo:');
For m:=1 to n do write(s[m]:4) ;
End.
{快速排序法的一躺排序程序}
program kuaisu(input,output);
type
arr=array[1..7] of integer;
var
a:arr;
i,j,k:integer;
procedure sort(var a:arr;var m,n:integer);
var
x,p,q:integer;
begin
x:=a[m];
repeat
while ((m<n) and (a[n]>x)) do n:=n-1;
p:=a[m];a[m]:=a[n];a[n]:=p;
while ((m<n) and (a[m]<x)) do m:=m+1;
p:=a[m];a[m]:=a[n];a[n]:=p
until m=n
end;
begin
writeln('input 10 integer num:');
i:=1;j:=1;k:=7;
repeat
read(a[i]);
i:=i+1;
until i>7;
sort(a,j,k);
for i:=1 to 7 do
write(a[i]:4);
writeln('j=',j:4,'k:',k:4)
end.
收藏到:Del.icio.us





