1. 堆的概念

堆的底层是数组,所以堆也是一种特殊的数组。
堆分为大堆和小堆:
- 大堆:父节点不小于子节点
- 小堆:父节点不大于子节点
2. 堆的构建
堆是一种数组结构。以小堆为例,已知父节点不大于子节点,使用数组实现时,下标 0 为根节点,1 和 2 为其子节点,接着 1 的子节点是 3 和 4,2 的子节点是 5 和 6,依此类推即可实现一个堆。
3. 堆的实现

既然是基于数组,就需要维护指针、容量大小等信息。
4. 堆的功能实现
4.1 堆的初始化

4.2 堆的销毁

4.3 堆的插入

直到这一步,操作与栈类似。因为我们插入了数据,此时无法保证满足堆的性质,所以需要进行向上调整。
4.3.1 向上调整
由于插入的数据在最下面,需要与上面的节点进行比较调整。

4.4 堆的删除
我们通常删除堆的最后一个元素。具体做法是将最后一个元素与第一个元素(堆顶)进行交换,然后使堆向下调整即可。







