一、什么是堆排序?
堆排序也是一种选择类排序,但它选择元素的方式和简单选择排序大不相同。
它将待排序数组看成一个完全二叉树,并通过建立大根堆或小根堆的算法使之成为一棵特殊的完全二叉树。为什么说其特殊呢? 用大根堆完全二叉树来说,任何一个结点的值大于等于它的左右子树的根的值。而小根堆完全二叉树恰好相反,任何一个结点的值小于等于它的左右子树的根的值。
举个栗子,大家就明白了 :
二、而堆排序呢(以大根堆排序为例),就是:
<1>、先将初始序列建成一个大根堆。
<2>、抽取大根堆的堆顶与最后一个元素进行交换,此时认为最后一个元素是递增有序的,而前面的所有元素都是无序的。