数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同..
来源:学生作业帮 编辑:神马作文网作业帮 分类:英语作业 时间:2024/11/13 22:01:57
数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同..
比如说(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.
初始堆即最大的元素在第一个,其他元素任意排(但是满足父节点大于子节点)
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.
关于选择排序和堆排序为什么说选择排序中比较的次数与初始的顺序无关而堆排序与初始顺序有关?
初始堆是什么?是已经用堆排序排完的最终的堆吗?
数据结构 堆排序设一组记录关键字序列为(80,70,33,65,24,56,48),则用筛选法建成的初始堆为
数据结构中堆排序,快速排序,归并排序排序的时间复杂度顺序快慢依次是什么?
数据结构中堆的定义是?
堆排序问题一组记录的关键码为146,79,56,38,40,84采用堆排序,则初始堆化后最后一个元素师是几?答案说是14
对一组记录的关键码为(46,79,56,38,40,84),如果采用堆排序方法,则建立的初始堆是?
一些孩子在沙滩上玩耍,他们把石子堆成许多堆,其中有一个孩子发现,从石子堆中任意选出五堆数量不同的石子,其实至少有两堆石子
数据结构堆排序试将(40,38,60,95,76,10,99)用堆排序的方法从小到大排序,要求写出过程(每拍好一个元素序
3堆苹果,共四十八个,第一堆给了第二堆和它(第二堆)一样的个数 ,然后第二堆又给了第三堆和它(第三堆)一样的个数,最后第
妈妈有72个糖果,分成了两堆,分给哥哥和弟弟.哥哥拿了第一堆的三分之二与第二堆的九分之五.剩...
简单选择排序和堆排序问题