若一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的堆为( )。
- 升序----使用大顶堆
- 降序----使用小顶堆
首先先将无序码写成一个完全二叉树,
-
先找到最后一个非叶子结点(n/2-1),即56,将它与它的左右孩子结点比较,若小于左(右)孩子结点,则与左(右)孩子交换
-
然后找出下一个非叶子结点,即79,重复上述操作
-
直到比较完最后一个非叶子结点,检查二叉树是否满足大顶堆性质,若不满足则继续调整,调整之后如下图,
-
到这就找到了最大值84,第一步完成,将最大值与最后的叶子结点交换位置,此时最大值已归位,之后不再管他
位置,此时最大值已归位,之后不再管他 -
这时就剩下5个元素,重复第一大步的操作,最终将无序码按由小到大的顺序排好,组成最终的大顶堆