Pagini recente » Cod sursa (job #3292884) | Cod sursa (job #3169848) | Cod sursa (job #2968647) | Cod sursa (job #3255147) | Cod sursa (job #240092)
Cod sursa(job #240092)
program quick_sort;
type vector=array[1..500000] of longint;
var x:vector;
n,i:longint; f,g:text;
procedure quick(s,d:longint);
var a,b,ia,aux:longint;
begin
a:=s;b:=d;
repeat
{parcurgem vectorul de la dreapta spre stanga}
while x[a]<x[b] do b:=b-1;
aux:=x[a];{interschimbare}
x[a]:=x[b];
x[b]:=aux;
a:=a+1;ia:=1;
if a<b then
begin
{parcurgem vectorul de la stanga spre dreapta}
while x[a]<x[b] do a:=a+1;
if a<>b then
begin
aux:=x[a];{interschimbare}
x[a]:=x[b];
x[b]:=aux;
b:=b-1;ia:=0;
end;
end;
until b<=a;
if s<a-ia then quick(s,a-ia);{autoapel stanga}
if a-ia+1<d then quick(a-ia+1,d);{autoapel dreapta}
end;
begin
assign(f,'algsort.in'); reset(f);
assign(g,'algsort.out'); rewrite(g);
readln(f,n);
for i:=1 to n do read(f,x[i]);
quick(1,n);
for i:=1 to n do
write(g,x[i],' ');
close(f);
close(g);
end.