形式陈述
二叉最小堆是满足两项性质的树:形状上是完全二叉树;次序上每个结点键不大于其孩子。完全形状允许用数组紧凑存储,按从 1 开始的下标时,父结点为 build-heap 的总时间是
直觉
堆只维护“父亲不比孩子大”的局部顺序,足以让全局最小值固定在顶部,却避免维护完整排序的额外成本。
例子与边界
数组 [1,3,2,7,5,8] 可满足最小堆性质,但中序或数组顺序并不整体有序。查找任意给定键最坏仍需
推论与应用
二叉堆实现优先队列,服务于 Dijkstra、Prim、事件模拟和调度。通过取最大堆并反复移除根可得原地堆排序。
参考资料
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Ch. 6, heaps, priority queues, and linear-time build。
- Robert Sedgewick and Kevin Wayne, Algorithms, 4th ed., Addison-Wesley, 2011,§2.4, priority queues and heaps。