讨论 / 1
萧风瑟 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.

查看更多回复
提交回复