学习首页/数据结构/最小堆交互演示 · JavaScript

代码与动画 MIN HEAP

最小堆.

完全二叉树的父节点不大于孩子,堆顶保存最小值。

插入 / 弹出 O(log n)读取堆顶 O(1)演示容量 10

原理与执行逻辑

最小堆是满足父节点不大于孩子的完全二叉树,用数组按层保存。堆顶是最小值,插入和删除只需沿一条路径修复关系。

执行步骤

  1. 插入时将值追加到数组末尾。
  2. 新值小于父节点时交换并继续上浮。
  3. 取最小值时保存根,用末尾元素填补根位置并缩小数组。
  4. 与较小的孩子比较并下沉,直到父节点不大于两个孩子。

关键理解

完全二叉树保证高度为 O(log n)。堆只约束父子大小,整个底层数组不保证升序;读取堆顶无需遍历。

简短示例

最小堆 [2, 5, 4] 插入 1,追加后与 5、2 依次交换,得到 [1, 2, 4, 5]。

代码与执行动画

STEP 0 / 0
最小堆
const heap = [12, 25, 38, 50];
1 行 · 0 个片段标记
size = 4min = 12
120251382503
当前数据正在操作已访问 / 命中标记 / 指针
输出 / 辅助状态
底层数组 [12, 25, 38, 50]
0

当前结构

选择操作,观察对应代码和状态变化。

操作当前结构

下一次操作使用上次完成后的数据。重置结构恢复初始示例。

值和键:1 至 99;位置从 0 开始。

实现说明

最小堆的操作规则

插入后上浮,弹出后把末尾节点移到根并下沉。节点旁的数字表示底层数组下标。

对应题目与扩展练习

观察执行过程后,按题目约束调整输入、返回值与实现。链接打开官方题目页面。