Skip to content
2026-09-29 04:20245 字数据结构完全二叉树

堆与优先队列 ​

堆是基于完全二叉树的优先队列结构,支持快速获取最值。

核心性质 ​

  • 结构性:完全二叉树,可用数组紧凑存储(索引 的左子 、右子 、父 )
  • 堆序性:大顶堆(父 ≥ 子)或小顶堆(父 ≤ 子)

关键操作 ​

操作复杂度过程
入堆 (push)尾部插入 → 向上冒泡(sift-up)
出堆 (pop)取堆顶 → 尾元素替换 → 向下堆化(sift-down)
建堆 (heapify)从最后一个非叶节点倒序 sift-down
取堆顶 (peek)直接读取 array[0]

应用 ​

  • 堆排序:建堆 + 反复出堆, 原地排序
  • Top-K 问题:维护大小为 K 的小顶堆
  • Dijkstra 最短路径:用小顶堆加速选最小距离节点
  • 合并 K 个有序链表

每一篇文章,都是时间的标本