萧风瑟 2011-02-10 23:53:00
点我顶贴
收藏
删除
var
n,i:longint;
a:array[1..100]of longint;
procedure mk(i:longint);
var j,t:longint;flag:boolean;
begin
j:=i*2;
while j<=n do
begin
flag:=false;
if (j<n)and(a[j]>a[j+1]) then inc(j);
if a[i]>a[j] then
begin
t:=a[i];a[i]:=a[j];a[j]:=t;
i:=j;j:=j*2;
flag:=true;
end;
if not flag then exit;
end;
end;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=(n div 2) downto 1 do
mk(i);
for i:=1 to n do
begin
write(a[1],' ');
a[1]:=a[n];
dec(n);
mk(1);
end;
end.