the_king
مدیرکل انجمن
برنامه زیر الگوریتم مرتب سازی سریع (Quick Sort) را پیاده سازی کرده و یک آرایه 10 عنصری را به عنوان مثال
مرتب می کند :
مرتب می کند :
کد:
program prg;
uses crt;
var
a,lower,upper:array[1..20] of integer;
i,j,beg,fin,n,top:integer;
procedure pop(var beg,fin,top:integer);
begin
beg:=lower[top];
fin:=upper[top];
top:=top-1;
end;
procedure push(aa,bb:integer;var top:integer);
begin
top:=top+1;
lower[top]:=aa;
upper[top]:=bb;
end;
function quick:integer;
var
left,right,temp,flag:integer;
begin
left:=beg;
repeat
right:=fin;
while(a[left]<=a[right]) and (left<right) do
right:=right-1;
if (a[left]>a[right]) then
begin
temp:=a[left];
a[left]:=a[right];
a[right]:=temp;
flag:=0;
end else
flag:=1;
left:=beg;
while(a[left]<=a[right]) and (left<right) do
left:=left+1;
if (a[left]>a[right]) then
begin
temp:=a[left];
a[left]:=a[right];
a[right]:=temp;
end else
flag:=flag+1;
until (flag=2);
writeln;
quick:=right;
end;
begin
clrscr;
n:=10;
a[1]:=45;
a[2]:=5;
a[3]:=25;
a[4]:=1445;
a[5]:=25;
a[6]:=15;
a[7]:=1235;
a[8]:=45;
a[9]:=25;
a[10]:=5;
for i:=1 to n do
readln(a[i]);
push(1,n,top);
while (top>0) do
begin
pop(beg,fin,top);
writeln ('>>',beg,' ',fin);
i:=quick;
if i>beg+1 then push(beg,i-1,top);
if i<fin-1 then push(i+1,fin,top);
end;
clrscr;
for i:=1 to n do
writeln(a[i]);
end.