Pagini recente » Cod sursa (job #2570095) | Cod sursa (job #1089885) | Cod sursa (job #41522) | Cod sursa (job #2179141) | Cod sursa (job #1939616)
type vector = array of longint;
var f1, f2:text;
i, n:longint;
a:vector;
procedure append(var a:vector; x:longint);
begin
SetLength(a, Length(a)+1);
a[Length(a)-1] := x;
end;
function pop(var a:vector):longint;
var x:longint;
begin
x:=a[Length(a)-1];
SetLength(a, Length(a)-1);
pop:=x;
end;
procedure qs(var a:vector);
var x,y,z: vector;
q, i, p:longint;
begin
if length(a)>1
then begin
SetLength(x, 0);
SetLength(y, 0);
SetLength(z, 0);
p:=a[length(a) div 2];
while length(a)>0 do
begin
q:=pop(a);
if q<p then append(x, q)
else if q=p then append(y, q)
else append(z, q);
end;
qs(x);
qs(z);
for i:=0 to length(x)-1 do append(a, x[i]);
for i:=0 to length(y)-1 do append(a, y[i]);
for i:=0 to length(z)-1 do append(a, z[i]);
end;
end;
begin
{read}
assign(f1, 'algsort.in');
reset(f1);
readln(f1, n);
SetLength(a, n);
for i:=0 to n-1 do
read(f1, a[i]);
close(f1);
{sort}
qs(a);
{write}
assign(f2, 'algsort.out');
rewrite(f2);
for i:=0 to length(a)-1 do write(f2, a[i],' ');
close(f2);
end.