堆排序的最坏最好平均时间复杂度均为O(nlogn),是不稳定排序。
堆是完全二叉树:左孩子结点2i+1,右孩子结点2i+2。
大顶堆:每个结点的值都大于或等于其左右孩子结点的值。
小顶堆:每个结点的值都小于或等于其左右孩子结点的值。
堆排序基本思想:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点,将其与末尾元素进行交换,此时末尾就是最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值,因为新构造的堆的堆顶是次小值,反复执行上述步骤,直到待排序序列为空,便可以得到有序序列。
从第一个非叶子节点开始调整,每一个子堆都构造成大顶堆。