Procedure rozdel(l,r:integer);
Var p,i,j,x,s:integer;
BEGIN
i:=l; j:=r;
x:=a[(l+r) div 2]; {za triediacu hodnotu berieme hodnotu stredn0ho prvku}
repeat
while a[i]< x do inc(i);
while x < a[j] do dec(j);
if i<= j then {ak i<= j tak sme nasli par na vymenu}
begin
p :=a[i]; a[i] := a[j]; a[j] := p;
inc(i); dec(j);
end;
until i>j; {i,j sa prekrizili, cize rozdelenie je skoncene}
if l<j then quick(l,j);
if i<r then quick(i,r);
END;
Procedure quick;
Begin
rozdel(1,n)
End;
|