定义

堆是具有如下性质的完全二叉树:
每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆
每个节点的值都小于或等于其左右孩子节点的值,称为小顶堆
image.png

从定义可以知道,根节点必然是最大(小)的,

堆也被称为优先队列,队列是先进先出的,而堆也有类似性质,在堆底插入,在堆顶弹出。但是堆并不是按先来后到的顺序,而是按照一定的优先顺序进行排列的。

堆排序算法

堆排序是利用堆的性质进行排序的方法。它的基本思路是,将待排序的序列构造成一个大顶堆,此时整个序列的最大值就是堆顶的根节点,将最大的移走,剩余的重新构造成一个大顶堆,如此循环,即可得到一个有序序列。