- 堆就是用数组实现的完全二叉树。分为最大堆和最小堆两种,两者的差别在于节点的排序方式
- 最大堆中,父节点的值比每一个子节点的值都要大;最小堆相反
- 堆常常被当作优先队列使用,实现最高级先出的行为特性,因为堆总是将最大值节点或最小值节点存放在树的根节点
最大堆的伪算法:最大堆和最小堆是对称关系,这也意味着我们了解其中之一即可,其中较为重要的算法为插入和删除
- 插入:假设在最大堆 [90, 80, 70, 60, 40, 30, 20, 10, 50] 中添加 85 ,需要执行的步骤如下
- 删除:假设从最大堆 [ 90, 85, 70, 60, 80, 30, 20, 10, 50, 40 ] 中删除 90 ,需要执行的步骤如下