堆(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;
    }
  }
}

交互演示

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

堆内容将显示在这里...
AI自动写材料指南:提升效率与降低AI率的最佳实践 降低论文重复率软件推荐 | 小发发降AIGC工具使用指南 AI文章润色指南:如何让AI生成内容更自然、更专业 | 小发猫降AIGC工具 用往届论文可以避免查重吗?学术诚信与论文查重解析 免费看知网论文的几种有效方法 | 学术资源获取指南 本科毕业论文如何降低查重率 | 实用技巧与工具推荐 好用的论文写作AI工具推荐 | 智能辅助写作与降AIGC指南 手机AI写作免费工具指南 | 小发猫降AIGC工具使用教程 英语论文可以用AI吗?深度解析AI写作的利弊与学术规范 | 专题探讨 AI帮写征文会被查出来吗?深度解析与检测防范指南 论文问卷星数据真实性分析 | 问卷星数据会有人查吗? 免费AI写作软件推荐 | 微信小程序AI写作工具与降AIGC检测指南 毕业设计完成后是否需要写论文?毕业设计论文写作全攻略 专业翻译软件评测与使用指南 - 提升多语言交流效率 消除论文痕迹 | 专业降AIGC工具使用指南 - 小发猫AI降重助手 论文查重后还能修改格式吗?论文格式调整与降AIGC指南 教学论文字数指南:一般多少字合适?写作规范与要点解析 AI创作文章软件推荐 - 2026年最佳AI写作工具指南 论文查重软件翻译 | AI降重工具使用指南 | 小发猫降AIGC 高质量论文写作全攻略:从选题到降AIGC的完整指南 怎么弄论文检测?完整指南与降AIGC工具推荐 | 学术诚信专题 职称论文好发表吗?- 发表技巧与降AIGC解决方案 微信AI朋友圈写作助手 - 智能创作工具专题 论文查重AI软件大全 | AI降重工具推荐与使用指南 如何让AI帮我们写总结 - AI文本处理实用指南 论文投稿指南:如何将学术论文成功投稿到网上平台 | 学术发表专题 2000字学术论文投稿指南 | 专业论文写作与降AIGC技巧 论文翻译助手 - 专业学术论文翻译与AIGC检测解决方案 AI软件免费使用指南 | 精选免费AI工具与降AIGC方法 毕业论文用AI检测吗?- 全面解析AI检测与降AIGC方法 快速校对论文错别字 | 高效论文润色与AI检测工具指南 不会被检测为AI的翻译软件 | 小发猫降AIGC技术 | 安全翻译工具 本科毕业论文评分标准:多少分算优秀?| 学术评价指南 如何解决AI隐私泄露问题 | 人工智能数据安全防护指南 严伯钧阅读专题 - 深度解读科学思维与认知升级 论文会查重参考文献么?- 参考文献查重详解与解决方案 AI智能成像检测仪 - 革新工业检测的未来技术 | 智能视觉检测解决方案 免费AI论文检测工具 - 专业识别AI生成内容,保障学术原创性 硕士论文查重软件检测盲区分析 | 学术诚信与AIGC工具使用 今年洪灾政府评估报告解读 | 防汛救灾政策专题 如何让AI自己读文章 - AI内容处理与降AIGC工具专题 如何用AI辅助护理查房 | AI在护理工作中的应用指南 期刊论文AI检测指南:学术期刊如何查AI生成内容? 生成式AI技术课程专题 | 从入门到实战的AI技术学习 AI智能写作免费小程序 - 高效内容创作解决方案 教师论文查重工具推荐 | 专业查重方案与降AIGC技巧 本科毕业设计查重指南:必要性、要求与降AI率工具推荐 论文去空白页 | 高效清除文档冗余页工具与技巧 AI写作助手小程序 - 智能文案创作与AIGC优化工具 毕业设计AI软件应用指南 - 智能辅助工具与降AI率解决方案 AI文献综述模板 | 学术写作指南与AIGC工具使用技巧 水处理技术论文专题:前沿研究、应用与AI检测工具解析 哪个AI写作工具更适合写课题?- 专业对比与降AIGC解决方案 洪涝监测:技术、方法与现代应用 | 水文灾害管理专题 毕业论文AI辅写查重解析 | 如何应对AI检测与降AIGC技巧 论文边框和底纹设置完整指南 - 格式规范与技巧详解 论文改稿指南 | 专业降重与AIGC检测优化方案 论文处理方法全解析 | 从写作到降AIGC检测完整指南 AI写作靠谱吗?能签约吗?| AI内容创作深度解析 国内AI写作应用指南:主流工具对比与降AIGC技巧 | AI写作专题 大学生毕业论文写作全攻略 | 从选题到答辩的完整指南 如何使用AI高效处理Word文档 - 智能化办公解决方案专题 论文批注完全删除指南 - 详细方法与工具推荐 疑似AI生成文章检测与优化专题 | 识别与降低AI率指南 论文免费查重黑榜 | 避坑指南与可靠工具推荐 如何规避头条的AI写作检测?实用方法与降AIGC工具介绍 如何屏蔽AI生成的文章 | 检测与过滤AI内容完全指南 智媒AI伪原创靠谱吗?深度解析AI内容创作与降AIGC工具 AIGC总体疑似度怎么降?- 小发猫降AIGC工具使用指南 AI审核是什么?AI内容审核原理、应用与降AIGC解决方案 AI如何识别和测量物体尺寸 - 智能尺寸检测技术详解 论文查重AI内容检测的必要性探讨 | 学术诚信与AI工具应用 手机AI写作软件推荐 | 2026年最佳AI写作工具评测 AI软件写论文指南:高效工具与AIGC检测规避方法 毕业论文检测系统 | 专业查重与AIGC降重解决方案 毕业论文用AI扩写会被查重系统检测出来吗?- AI内容检测与降AIGC解决方案 论文查询指南 - 如何查询自己的学术论文收录与引用 论文自动检测错别字工具 | 智能校对与降AIGC检测解决方案 文章AI检测专题 - 如何检测与降低文章AI率,提升内容原创性 上海AI设计公司 - 专业人工智能设计服务与解决方案 毕业论文用AI的可靠吗?AI写作工具在学术论文中的应用与风险 论文修订后如何处理?完整处理流程与降AIGC工具使用指南 毕业论文修改技巧和方法 - 从初稿到定稿的完整指南 AI论文翻译网站 - 高效精准的学术论文翻译与降AIGC解决方案 AI平面广告设计:创新工具与降AIGC技术应用指南 如何查找自己的本科论文 | 完整查询指南与方法详解 免费英文论文查重工具推荐 | 高效查重与AI检测解决方案 白天跑单晚上写论文:当代大学生的双重生活 | 时间管理与学术写作专题 好用的论文检测软件推荐 | 学术诚信与原创性保障工具 AI生成知识图谱:技术解析与应用实践 | 人工智能知识管理专题 高效SCI降重机构 | 专业论文降重与AI率降低服务 AI论文撰写工具指南 | 高效学术写作与降AIGC解决方案 毕业论文校内查重详解 - 知乎常见问题与降AIGC方法 AI读文章应用推荐 | 智能朗读工具与降AIGC解决方案 洪涝灾害风险特征识别 | 预防减灾与智能识别技术 晋职称用的论文有时间限制吗?评审时间规定与注意事项全解析 AI议论文素材专题 - 人工智能写作、伦理与发展素材库 AI智能写文案神器 - 高效创作与AIGC检测降重工具 免费AI论文写作工具推荐 | AI智能写作网站专题 直接翻译英文论文 - 高效学术翻译与降AI工具指南