速度:

时间复杂度:O(N*log2N)    空间复杂度:O(1)   稳定性:不稳定排序   类别:选择  
        堆排序 heapsort,是指利用堆这种数据结构所设计的一种排序算法。堆是完全二叉树,分为大顶堆和小顶堆。大顶堆的特点是指任何一个父节点的值,都大于等于它左右孩子节点的值。小顶堆的特点是指任何一个父节点的值,都小于等于它左右孩子节点的值。
        假设是大顶堆,因为堆中父节点都比子节点大,所以根节点就为最大值,移动最大值到二叉树最末尾,则此节点为已排序节点。由于交换位置后,根节点为末尾节点,交换后的根节点不一定比子节点大,所以需要重新处理二叉树,将其调整为大顶堆。

        整体分为三步骤。
        一:将数组构造完全二叉树。
        二:将完全二叉树构造成大顶堆,即树中所有父元素都比子元素大。构造大顶堆的步骤。1.首先从右至左,从下至上遍历非叶子节点,比较非叶子节点和俩个子节点的较大值,如果非叶子节点小于叶子节点较大值,则互换位置,保证调整后的非叶子节点大于子节点。2.互换位置后,因为有可能新的叶子节点比叶子节点的叶子节点还小,所以需要重复比较和互换位置的操作。维持大顶堆的结构。
        三:循环删除堆顶元素,移到集合尾部。将最后一个元素移动到堆顶,调节堆产生新的堆顶。新的堆重复比较非叶子节点和叶子节点的步骤。保证堆的特点。