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

这样一组数 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
75

45和16、49比,16最小,换

16
45 49
28 37 82 56
75

45和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
16

56和28换,输出28

56
37 49
45 75 82 28
16

再建初始堆

37
45 49
56 75 82 28
16

82和37换,输出37

82
45 49
56 75 37 28
16

建初始堆

45
56 49
82 75 37 28
16

75和45换,输出45

75
56 49
82 45 37 28
16

建初始堆

49
56 75
82 45 37 28
16

82和49换,输出49

82
56 75
49 45 37 28
16

建初始堆

56
82 75
49 45 37 28
16

75和56换,输出56

75
82 56
49 45 37 28
16

建初始堆

75
82 56
49 45 37 28
16

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

    原文作者:排序算法
    原文地址: https://blog.csdn.net/kisscatforever/article/details/53713538
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞