var
a,b,c:longint;
v:array[0..200000]of longint;
procedure down(s:longint);
var
son,t:longint;
begin
son:=s*2;
if son<=a then
begin
if (v[son]>v[son+1])and(son+1<=a) then inc(son);
if (son<=a)and(v[son]<v[s]) then
begin
t:=v[s];
v[s]:=v[son];
v[son]:=t;
down(son);
end;
end;
end;
procedure writ;
begin
writeln(v[1]);
v[1]:=v[a];
dec(a);
down(1);
if a=0 then exit;
writ;
end;
begin
readln(a);
for b:=1 to a do
readln(v[b]);
for b:=a downto 1 do
begin
down(b);
end;
writ;
end.
堆排
最新推荐文章于 2024-11-26 16:04:06 发布