堆排序(Heap Sort)是一种基于堆数据结构的比较排序算法。堆是一棵完全二叉树,具有堆属性:对于最大堆,每个节点的值都大于或等于其子节点的值;对于最小堆,每个节点的值都小于或等于其子节点的值。堆排序利用了堆的这一特性来实现高效的排序。
堆排序的基本思想是先将待排序的数组构造成一个最大堆(或最小堆),然后通过不断地取出堆顶元素(最大值或最小值),重建堆,从而完成排序。
heapify
函数构建最大堆,然后不断将堆顶元素移到数组末尾,调整剩余的堆。
i
为根的子树,使其成为最大堆。它检查 i
节点和其子节点的值,确保最大的值在 i
位置。如果 i
位置不是最大值,交换它和最大子节点的位置,并递归调整交换后的子树。
heapSort
方法排序一个整数数组,并打印排序前后的数组。
堆排序是一种高效的排序算法,尤其适用于大数据量的排序。它利用堆这种数据结构的特点,保证了较好的时间复杂度和低空间消耗。虽然它不如快速排序常用,但在需要稳定的性能和低空间开销时,堆排序是一个不错的选择。