堆排序
堆排序:约等于利用完全二叉树的结构来维护的一组数组arr。(主要优点是可以快速访问到所需的某个元素)
基本思想:先将数组构造成一个大顶堆(与小顶堆定义恰好相反),将根结点与末层元素交换,再将其余继续构造成大顶堆,再将此时的根结点与末层结点交换----依次循环往复,即得到一个递增的有序数列。
小顶堆:每个结点的值应小于等于其左右孩子的结点值。
设当前结点为i,则其孩子结点为2i+1、2+2
堆排序:约等于利用完全二叉树的结构来维护的一组数组arr。(主要优点是可以快速访问到所需的某个元素)
基本思想:先将数组构造成一个大顶堆(与小顶堆定义恰好相反),将根结点与末层元素交换,再将其余继续构造成大顶堆,再将此时的根结点与末层结点交换----依次循环往复,即得到一个递增的有序数列。
小顶堆:每个结点的值应小于等于其左右孩子的结点值。
设当前结点为i,则其孩子结点为2i+1、2+2