0
点赞
收藏
分享

微信扫一扫

【算法】堆排序大根堆和小根堆建堆以及元素输出

这样一组数 45 28 49 16 37 82 56 75初始堆后,利用堆排序怎么排,规律是什么?
首先建立完全二叉树 
 45 
 28 49 
 16 37 82 56 
 75从n/2个节点开始选择,第一趟,16比75小,不换.到n/2-1个节点,49和82、56比,49小,也不换.到n/2-2个结点,28和16、37比,16小,变成 
 45 
 16 49 
 28 37 82 56 
 7545和16、49比,16最小,换
16 
 45 49 
 28 37 82 56 
 7545和28、37比,28最小 
16 
 28 49 
 45 37 82 56 
 75最小初始堆建好了,到输出,首先75和16换,输出16
75 
 28 49 
 45 37 82 56 
 16将剩下的元素建成堆 
28 
 37 49 
 45 75 82 56 
 1656和28换,输出28 
56 
 37 49 
 45 75 82 28 
 16再建初始堆
37 
 45 49 
 56 75 82 28 
 1682和37换,输出37
82 
 45 49 
 56 75 37 28 
 16建初始堆
45 
 56 49 
 82 75 37 28 
 1675和45换,输出45
75 
 56 49 
 82 45 37 28 
 16建初始堆
49 
 56 75 
 82 45 37 28 
 1682和49换,输出49
82 
 56 75 
 49 45 37 28 
 16建初始堆
56 
 82 75 
 49 45 37 28 
 1675和56换,输出56
75 
 82 56 
 49 45 37 28 
 16建初始堆
75 
 82 56 
 49 45 37 28 
 1682和75换,输出75
82 
 75 56 
 49 45 37 28 
 16输出82
82 
 75 56 
 49 45 37 28 
 16


得到有序序列82,75,56,49,45,37,28,16,是按从小到大输出的,如果要按从大到小输出,建初始堆的时候,建最大堆就可以了,规律似乎看不出来


举报

相关推荐

0 条评论