Pagini recente » Cod sursa (job #755992) | Cod sursa (job #1867250) | Diferente pentru info-oltenia-2018/individual/clasament/10 intre reviziile 3 si 4 | Cod sursa (job #195447) | Cod sursa (job #331419)
Cod sursa(job #331419)
var v:array[1..500000] of longint;
n,i,m,piv,j,aux:longint;
f,g:text;
k:boolean;
function sort2(min,max:longint):longint;
begin
m:=min+(max-min) div 2;
piv:=v[m];
i:=min-1;
j:=max+1;
k:=true;
repeat
repeat
i:=i+1;
until v[i]>=piv;
repeat
j:=j-1;
until v[j]<=piv;
if i<j then
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end
else
begin
k:=false;
sort2:=j;
break;
end;
until k=false;
end;
procedure sort1(min,max:longint);
var p:longint;
begin
if min<max then
begin
p:=sort2(min,max);
sort1(min,p);
sort1(p+1,max);
end;
end;
begin
assign(f,'algsort.in');
assign(g,'algsort.out');
reset(f);rewrite(g);
readln(f,n);
for i:=1 to n do
read(f,v[i]);
sort1(1,n);
for i:=1 to n do
write(g,v[i],' ');
close(f);close(g);
end.