Pagini recente » Cod sursa (job #1359860) | Cod sursa (job #2497206) | Cod sursa (job #1023356) | Cod sursa (job #3170271) | Cod sursa (job #686994)
Cod sursa(job #686994)
program sort_opt;
var v:array [0..500001] of longint;
aux:longint;
i, j, n, an, min:longint;
f, g:text;
begin
assign (f,'algsort.in'); reset (f);
assign (g,'algsort.out'); rewrite (g);
read (f,n);
for i:=1 to n do
begin read (f,v[i]);
j:=i;
while (v[j]<v[j div 2]) do
begin aux:= v[j];
v[j]:=v[j div 2];
v[j div 2]:=aux;
j:=j div 2;
end;
end;
an:=n;
for i:=1 to n do
begin write (g,v[1],' ');
v[1]:=v[an];
an:=an-1;
j:=1;
min:=1;
while (min<>0) do
begin min:=0;
if (j*2<=an) then begin min:=j*2;
if (j*2+1<=an) and (v[j*2+1]<v[j*2]) then min:=j*2+1;
if (v[min]>v[j]) then min:=0;
if (min<>0) then begin aux:=v[j];
v[j]:=v[min];
v[min]:=aux;
j:=min;
end;
end;
end;
end;
close (f);
close (g);
end.