人气:1
大家好,小帝来为大家解答以上问题。堆排序算法思想,堆排序算法这个很多人还不知道,现在让我们一起来看看吧!
1、初始堆: 49 a[1]
2、 38 65 a[2] a[3]
3、 97 76 13 27 a[4] a[5] a[6] a[7]
4、 50 a[8]
5、procedure heap(nn,ii:integer);
6、 var x,i,j:integer;
7、 begin
8、 i:=ii;x:=a[ii];j:=2*ii;
9、 while j<=nn do
10、 begin
11、 if (j<nn) and(a[j]<a[j+1] then j:=j+1;
12、 if x<a[j] then begin a[i]:=a[j];i:=j;j:=2*i;end
13、 else j:=nn+1;
14、 end;
15、 end;
16、主程序:
17、for i:=n div 2 downto 1 do heap(n,i); /heap相当于搜索顶点i的所有子节点,找出最大的和它替换
18、for i:=n downto 2 do
19、 begin
20、 temp:=a[1];a[1]:=a[i];a[i]:=temp; /将当前最大的数(放在a[1])和第i个数交换,保证从后面往前数是
21、 heap(i-1,1); 从大到小,则程序完成时,数组a从前往后是从小到大
22、 end;
23、至于过程自己用笔算,很快就会明白,不明白算了就明白。
以上就是【堆排序算法思想,堆排序算法】相关内容。
上一篇:死亡之屋4特别版(死亡鬼屋4)
声明: 本站所有文章来自互联网搜索结果, 如果侵犯到你的权益 请提供版权证明来信告知,我们会在3个工作日之内删除 本站为非赢利性网站 不接受任何赞助和广告
Copyright 2005-2021 http://kt.pingguodj.com 酷头网 客服邮箱:s2s2s2-s@outlook.com