堆(Heap)数据结构

高效管理优先级数据的核心结构

什么是堆?

堆(Heap)是一种特殊的完全二叉树,满足堆性质

堆常用于实现优先队列,支持高效的插入和提取最值操作。

堆的常见操作

堆的应用场景

  1. 任务调度:操作系统按优先级调度进程。
  2. Top-K 问题:快速找出最大/最小的 K 个元素。
  3. Dijkstra 算法:使用最小堆优化路径查找。
  4. 堆排序(Heapsort):基于堆的比较排序算法。

JavaScript 实现示例(最小堆)

class MinHeap {
  constructor() {
    this.heap = [];
  }

  getParentIndex(i) { return Math.floor((i - 1) / 2); }
  getLeftChildIndex(i) { return 2 * i + 1; }
  getRightChildIndex(i) { return 2 * i + 2; }

  swap(i, j) {
    [this.heap[i], this.heap[j]] = [this.heap[j], this.heap[i]];
  }

  peek() {
    return this.heap[0];
  }

  insert(value) {
    this.heap.push(value);
    this.heapifyUp();
  }

  heapifyUp() {
    let index = this.heap.length - 1;
    while (index > 0 && this.heap[this.getParentIndex(index)] > this.heap[index]) {
      this.swap(index, this.getParentIndex(index));
      index = this.getParentIndex(index);
    }
  }

  extractMin() {
    if (this.heap.length === 0) return null;
    if (this.heap.length === 1) return this.heap.pop();

    const min = this.heap[0];
    this.heap[0] = this.heap.pop();
    this.heapifyDown();
    return min;
  }

  heapifyDown() {
    let index = 0;
    while (this.getLeftChildIndex(index) < this.heap.length) {
      let smallerChildIndex = this.getLeftChildIndex(index);
      if (this.getRightChildIndex(index) < this.heap.length &&
          this.heap[this.getRightChildIndex(index)] < this.heap[smallerChildIndex]) {
        smallerChildIndex = this.getRightChildIndex(index);
      }

      if (this.heap[index] < this.heap[smallerChildIndex]) break;
      this.swap(index, smallerChildIndex);
      index = smallerChildIndex;
    }
  }
}

交互演示

点击下方按钮体验最小堆的操作:

堆内容将显示在这里...
Python将字符串(str)转换为整数(int)的完整指南 iPhone机型发布顺序大全-从初代到最新款完整时间线 “complainment”存在吗?——英语词汇探秘专题页 Endorphio的隐喻与寓意|探索内在喜悦的象征意义 pioneer的读音-英语发音指南与词义解析 heapq 模块详解-Python 堆队列算法指南 去香港买 iPhone 17 最全攻略|省钱指南、购买流程与注意事项 NS登陆港服eShop完整指南-港服Nintendo Switch商店设置教程 OpenCV 手机版-移动端计算机视觉开发指南 Python Spyder 教程-零基础入门到精通 听见世界:探索听觉的奥秘与声音之美 OneChain-构建可信数字未来的区块链基础设施 Pixelmon Modpack 攻略大全-宝可梦与我的世界完美融合 Propine是什么药?作用、用法与注意事项详解 Champion短袖78TP专题页-舒适经典,潮流之选 匹诺曹(Pinocchio)童话故事专题页|经典童话角色介绍 Champion服装78TP专题页-经典美式休闲潮流品牌 iPhone手机发烫怎么办?全面解决方法汇总 Penetration 的隐晦含义:语言、文化与象征的多维解读 Python Celery 入门与实战指南-异步任务队列最佳实践 Switch进入eShop白屏问题解决指南|常见故障与修复方法 Pinion最低齿比详解-自行车传动系统专题 Senior最高级:探索语言中的极致表达 Shein百科-全面了解全球快时尚电商巨头 iPhone历年型号大全|从初代到最新款全解析 Pioneer是什么音响?品牌历史、产品特点与选购指南 Python里的pip有什么用?详解pip包管理工具-Python开发指南 Python常用指令速查表|快速掌握Python核心语法 Python库大全-常用第三方库介绍与使用指南 SHEIN估值分析-快时尚巨头的商业价值与未来前景 Shopee买家中心-管理订单、查看物流、享受购物优惠 渗透(Permeation)—— 探索无形之力如何穿越边界 Moncheri 正确发音指南-快速学会标准读音 Switch怎么登陆eShop?详细图文教程-任天堂eShop登录指南 eshop登录-安全快捷的电商账户登录入口 Shopee商家版-轻松开店,高效经营东南亚电商 美版iPhone型号开头是什么?全面解析A系列编号与地区代码 Compliment 与 Complement 的区别|英语易混淆词详解 Incorporate To-融入、整合与协作的未来之道 Hearing That-探索声音与倾听的艺术 Champion 与 Winner 的区别:含义、用法与例句详解 iPhone 17 Pro 与 iPhone 17 Pro Max-全新旗舰,震撼登场 情感动词大全|表达情绪的常用英语动词 iPhone发烫怎么解决?全面降温指南|手机使用技巧 iPhone 17 支持 AI 吗?最新功能与技术解析 Conceptual:探索抽象与创意的边界 匹诺曹在法国:童话与文化的奇妙交融 日版 iPhone 在中国能用吗?全面解析支持情况与注意事项 iPhone 17 Pro 镜头 1.17:全新影像革命-78TP前瞻 始祖鸟 Endorphin 马甲-轻量防护,户外自由之选 海南iPhone 17价格最新行情|海南苹果手机购买指南 iPhone 15 三摄系统详解|摄像头图解与功能介绍 You’re Nothing – 探索存在与虚无的边界 Python怎么打开IDLE?详细教程与使用指南 匹诺曹(意大利版)— 经典童话角色与文化象征 先锋工作|探索创新与突破的边界 Appetit-探索全球美味,唤醒你的味蕾 台湾买的 iPhone 在中国大陆能用吗?全面解析 eSIM 与网络兼容性 PythonTip78TP网站-精通Python,从实战开始 iPhone 17 前后双摄:影像新纪元|全新摄影体验 Pioneer App-探索未来,尽在掌中|78TP下载 意大利Pinarello自行车-传奇工艺与速度的完美结合 Python heapq 模块详解-最小堆操作与应用示例 Nice to Her-温柔以待,遇见更好的她 台灣買 iPhone 便宜嗎?2026 最新價格與省錢攻略 Python bytes 拼接详解-高效处理二进制数据 Pioneet-探索创新,引领未来 Python安装时如何勾选“Add pip to PATH”选项-全面指南 Superior To:探索卓越与超越的力量 iPhone 17 韩版和国版区别详解|最新对比指南 Incotporate-探索创新与协作的未来工作方式 iPhone 橙色主题专题页|探索活力橙色 iPhone 的魅力 When It Comes To 造句大全-实用英语表达学习 iPhone 17 橙色全称-全新配色,惊艳登场 “school supplies”怎么读?发音、意思与常见文具清单 台湾版 iPhone XS 在大陆能用吗?全面解析支持情况 台灣 iPhone 11 有雙卡嗎?完整解析與使用指南 Champion运动旗舰店-78TP正品运动服饰|舒适、潮流、经典 Champion短袖T恤-经典舒适,潮流之选 Python 自带 IDLE 入门指南-轻量级开发环境介绍 Conceive 的名词含义与用法详解|英语词汇专题 Python3 教程-从入门到精通的完整学习指南 Pinion变速箱7LONGWEN-高性能自行车中轴变速箱解决方案 eshop登录不上?常见原因与解决方法-快速恢复您的账户访问 悦耳之声-探索令人心情愉悦的声音世界 Python爬虫环境搭建指南-快速入门Spider开发 淘宝 iPhone 17 发货时间查询-最新上市信息与购买指南 德国Prorino水-源自阿尔卑斯的天然矿泉水 Senior造句大全-实用例句与英语学习资源 大象专题页-探索地球上最温柔的巨兽 始祖鸟 Incendo Hoody 防风连帽夹克-轻量透气 高性能户外装备 台版 iPhone 11 能在大陆用吗?全面解析与使用指南 iPhone首发会提前发货吗?最新消息与用户指南 Switch登录不了eShop?常见原因与解决方法汇总-任天堂eShop故障排查指南 Switch Online 会员服务-任天堂 Nintendo Switch 在线联机必备 SHEIN组织架构详解-公司治理与团队结构 Python ctypes 教程-调用 C 函数的完整指南 Python中time模块的用法详解-时间处理入门指南 iPhone韩版和国行的区别在哪?全面对比解析 台服 Nintendo eShop 專題指南|最新遊戲、優惠與購買教學