数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同..比如说(46,79,56,38,40,84)它的初始堆是什么,堆排序后又是什么,最好给个排序的过程...thanks
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 15:00:22
数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同..比如说(46,79,56,38,40,84)它的初始堆是什么,堆排序后又是什么,最好给个排序的过程...thanks
数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同..
比如说(46,79,56,38,40,84)它的初始堆是什么,堆排序后又是什么,最好给个排序的过程...thanks
数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同..比如说(46,79,56,38,40,84)它的初始堆是什么,堆排序后又是什么,最好给个排序的过程...thanks
我说的是最大堆(即从大到小排)
初始堆即最大的元素在第一个,其他元素任意排(但是满足父节点大于子节点)
var i,n:longint;
a:array[1..1000] of longint;
procedure ex(var x,y:longint);
var k:longint;
begin
k:=x;x:=y;y:=k;
end;
procedure down(i,l:longint);
var t:longint;
begin
t:=i*2;
while ta[i] then
begin
ex(a[t],a[i]);
i:=t;t:=i*2;
end
else break;
end;
end;
begin
readln(n);
for i:=1 to n do read(a[i]);
readln;
for i:=n div 2 downto 1 do down(i,n);
for i:=n downto 2 do
begin
write(a[1],' ');
a[1]:=a[i];
down(1,i-1);
end;
writeln(a[1]);
end.