الگوریتم Quick Sort در زبان پاسکال

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.
 

جدیدترین ارسال ها

بالا