这样一组数 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,是按从小到大输出的,如果要按从大到小输出,建初始堆的时候,建最大堆就可以了,规律似乎看不出来