一.什么是堆
堆(HEAP):数据结构中的一种,堆可以被看作一颗完全二叉树,其每个节点的值都大于或等于其左右孩子节点的值,称为最大堆;其每个节点的值小于或等于其左右孩子节点的值称为最小堆。其根节点一定是堆中最大(小)者。
最大堆 最小堆
二.堆排序
堆排序(Heap Sort):将带排序的序列构造成一个最大堆,将其堆顶元素与序列最后一个元素相交换,将此元素移走,继续将n-1个序列重新调整为最大堆,这样会得到n个元素中次大值,将其放大序列中倒数第二的位置,再将其移走。如此反复执行,直到堆的size变为1.便能得到一个有序序列了。
堆排序为非稳定排序,当数组中有相等元素时,堆排序算法对这些元素的处理方法不止一种,故是不稳定的。
三.代码实现
调整最大堆