优先队列(Priority Queue)

高效管理带优先级任务的数据结构

什么是优先队列?

优先队列(Priority Queue)是一种特殊的队列,其中每个元素都有一个“优先级”。出队时,总是移除优先级最高(或最低,取决于实现)的元素,而不是按照先进先出(FIFO)原则。

它广泛应用于任务调度、Dijkstra最短路径算法、Huffman编码、事件驱动模拟等场景。

核心特性

JavaScript 简易实现

以下是一个基于最小堆的优先队列简易实现:

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

  enqueue(val, priority) {
    this.heap.push({ val, priority });
    this.bubbleUp();
  }

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

    const top = this.heap[0];
    this.heap[0] = this.heap.pop();
    this.bubbleDown();
    return top;
  }

  bubbleUp() {
    let index = this.heap.length - 1;
    while (index > 0) {
      const parentIdx = Math.floor((index - 1) / 2);
      if (this.heap[parentIdx].priority <= this.heap[index].priority) break;
      [this.heap[parentIdx], this.heap[index]] = [this.heap[index], this.heap[parentIdx]];
      index = parentIdx;
    }
  }

  bubbleDown() {
    let index = 0;
    const len = this.heap.length;
    while (true) {
      const left = 2 * index + 1;
      const right = 2 * index + 2;
      let smallest = index;

      if (left < len && this.heap[left].priority < this.heap[smallest].priority)
        smallest = left;
      if (right < len && this.heap[right].priority < this.heap[smallest].priority)
        smallest = right;

      if (smallest === index) break;
      [this.heap[index], this.heap[smallest]] = [this.heap[smallest], this.heap[index]];
      index = smallest;
    }
  }
}

交互演示

点击下方按钮查看优先队列入队/出队过程:

常见应用场景

  1. 操作系统任务调度:高优先级任务先执行。
  2. 图算法:如 Dijkstra 算法中选择当前最短路径节点。
  3. 事件驱动模拟:按时间戳顺序处理事件。
  4. 数据流中找 Top-K 元素:维护一个大小为 K 的优先队列。
去打印店打印论文安全吗?- 隐私保护与安全打印完全指南 AI助手软件全解析:主流工具、核心功能与应用场景 | 智能助手专题 成人高考毕业论文查重指南 - 降AIGC与学术规范详解 AIGC总体疑似度怎么降?- 小发猫降AIGC工具使用指南 论文AIGC检测率降低攻略 - 从高风险到低风险完全指南 论文摘要复写率高要改吗?- 专业降重指南与工具推荐 AI生成文章有版权吗?深度解析AI内容版权归属与保护 AI检测文章优质内容软件 - 专业AI内容质量检测与降AIGC解决方案 AI如何辅助写论文 | 智能写作与降AI率工具指南 AI拍照扫描翻译:智能图像识别与实时翻译技术应用专题 论文正式查重前必看:高效查重步骤与降AIGC工具推荐 | 学术指南 测AI的软件专题 | AI内容检测工具全面评测与推荐 关于写爱的作文 - 写作技巧与AI原创性优化指南 AI论文写作助手免费使用指南 | 高效学术写作工具推荐 如何用AI写论文总结 | AI写作技巧与降AIGC方法 AI论文修改指令完全指南 | 提升学术写作质量与降低AIGC风险 AI爆文写作软件全解析:工具推荐、技巧与降AIGC解决方案 AI写作被识别 - 如何检测与降低AI文本特征 | 专题解析 AI英文作文写作指南 | 提升英语写作效率与质量的智能工具 用AI写论文如何降低查重率 | AI论文降重技巧与工具推荐 本科论文什么时候录入数据库 | 论文收录时间与流程详解 湖南大学论文抄袭防范指南 | 学术诚信与AI辅助工具规范 知网论文查重报告详解 - 如何看懂查重结果与降低重复率 本科毕业设计AIGC要求解读 | 学术规范与降AIGC工具指南 论文AI智能写作全指南 - 高效工具与降AI率技巧 AI操作逻辑解析:从基础原理到降AI率工具应用 修改论文一直有批注怎么办?- 论文修改批注问题解决方案专题 AI软件作业设计指南 - 高效完成AI课程作业的实用工具与方法 AIGC总体疑似度是什么意思?详解AI内容检测核心指标 | 小发猫降AIGC工具 什么AI软件好用?2026年十大热门AI工具推荐与评测 论文写作AI助手抖音专题 | AI写作工具与降AI率解决方案 AI论文归纳:方法与工具全解析 | 智能文献处理专题 毕业论文降重多少合适?| 降重标准与技巧全解析 论文发表查重率要求详解 | 学术期刊标准与降AIGC方案 AI写的论文能发期刊吗?- AI学术论文发表全指南 论文查重系统哪个最好?2026年权威评测与推荐 | 学术诚信指南 哪个AI可以写方案?2026年最佳AI方案生成工具对比 | 小发猫降AIGC工具介绍 论文复写率可以是0吗?如何实现零复写率 论文AI写作识别原理 | AI检测技术与小发猫降AIGC工具使用指南 毕业论文一键转换为PPT | 高效毕业答辩解决方案 AI人工智能相片处理 | AI图片编辑工具与应用指南 错别字检测软件大全 | 专业文字校对工具推荐 AI学习写作文章全攻略 | 从入门到精通的人工智能写作指南 大学生论文抄袭检测系统与知网对比指南 | 学术诚信专题 如何用AI优化简历提升求职成功率 | 专业AI简历优化指南 AI写作软件推荐与工具指南 - 2026年最佳AI写作助手盘点 知网查重和PaperFree相差大吗?全面对比分析 | 论文查重专题 论文AI检测:现在能查出论文是AI写的吗?- 检测技术与应对方法 怎样去除论文页面标记 | 专业AI降重工具使用指南 论文抄袭举报指南:权威举报渠道与处理流程详解 论文检测网站哪个最好?2026年权威评测与推荐指南 论文查重检测软件专题 - 专业查重工具推荐与使用指南 免费AI写作软件推荐 | 微信小程序AI写作工具与降AIGC检测指南 怎么引导AI写标题 - AI标题生成技巧与降AIGC方法 函授本科查重率是多少?权威解读与降重指南 AI写作APP科研论文应用指南 | 专业学术写作辅助工具 AI视频内容智能评审系统 - 技术解析与应用指南 AI论文反检测攻略 | 如何有效降低AI论文检测率 本科论文引用率为0有影响吗?论文查重与学术规范解析 AI写作识别原理详解 | 深度解析AI生成内容检测方法 好用的AI写文章生成报告工具推荐 | 智能写作与AIGC检测 初一作文指导:如何写爱的作文结尾技巧与范例 | 情感表达写作 华为AI测量软件下载 - 78TP正版下载与使用教程 如何用AI写文章摘要 - AI摘要生成与降AIGC工具指南 论文免费AI写作工具指南 | 高效降AIGC率技巧 论文背景介绍 - 研究基础、学术价值与创新要点解析 AI如何分析数据报表 | 智能数据分析方法与实践指南 AI写材料好用吗?智能写作工具全面解析与降AIGC方法 中国AI写作会被发现吗?AI内容检测与降AIGC工具解析 AI写作如何避开检测 | AI内容优化与降AIGC技巧 目前写论文最好用的AI工具 - AI写作助手与降AIGC工具指南 2026年论文查重率解析 | 降重技巧与工具推荐 毕业论文学术不端处理情况报告 | 学术诚信与AI检测工具解析 如何免费使用AI生成的文章 | 工具指南与降AI率技巧 洪涝灾害成因、影响与防治策略研究 | 专题论文 为什么文章会被检测为AI | AI内容检测原理与降AIGC方法 头条AI内容识别机制解析 | 如何通过工具降低AI生成痕迹 为什么AI写的文章别人能看出来?AI内容检测与降AIGC处理指南 毕业论文一键替换工具 - 小发猫降AIGC工具使用指南 分析报告AI工具:提升效率与准确性的智能解决方案 | AI分析专题 论文写作必备:小众AI工具深度解析与小发猫降AIGC工具使用指南 毕业论文删除一整页技巧 - 快速解决论文排版与AIGC检测问题 作文AI生成应用大全 - 主流工具与降AI率技巧 AI创作文章月入几万实战指南 - 揭秘高效内容创作与AIGC优化技巧 本科毕业设计要做软件吗?软件类毕业设计全攻略 | 本科毕设指南 AI算法实战专题 | 从理论到实践,掌握人工智能核心技术 AI文本撰写:技术、应用与降AI率工具全解析 | 专题页面 英文论文查重率怎么降低 | 专业降重方法与工具推荐 毕业论文AI免费软件推荐 | 如何合理使用AI辅助论文写作并降低AI率 论文投稿成功确认指南 | 学术发表关键步骤详解 毕业论文被泄露有什么后果?- 学术安全风险与防护指南 严伯钧AI精品课程视频 - 人工智能深度学习专题 快速校对论文错别字 | 高效论文润色与AI检测工具指南 AI软件自动读稿技术 - 高效语音合成与文本转语音解决方案 论文查重免费网站推荐 | 学生必备查重工具指南 如何判断论文质量好不好 | 学术论文评估指南与降AI率技巧 AI智能简历制作指南 - 高效创建专业简历的方法与工具 论文校对免费软件推荐 | 高效学术写作工具指南 用AI写的论文会被查出来吗?高二学生必读指南 | AI写作与学术诚信 医生发表论文级别全解析:SCI、核心期刊与职称评定指南