优先队列

✍ dations ◷ 2025-09-18 19:37:10 #数据结构

优先队列是计算机科学中的一类抽象数据类型。优先队列中的每个元素都有各自的优先级,优先级最高的元素最先得到服务;优先级相同的元素按照其在优先队列中的顺序得到服务。优先队列往往用堆来实现。

优先队列至少需要支持下述操作:

其它可选的操作:

有许多简单低效的实现。如用一个有序的数组;或使用无序数组,在每次取出时搜索全集合,这种方法插入的效率为O(1),但取出时效率为​O(n)。

出于性能考虑,优先队列用堆来实现,具有(log )时间复杂度的插入元素性能,()的初始化构造的时间复杂度。如果使用自平衡二叉查找树,插入与删除的时间复杂度为(log ),构造二叉树的时间复杂度为( log )。

从计算复杂度的角度,优先级队列等价于排序算法。

有一些特殊的堆为优先队列的实现提供了额外的性能:二叉堆的插入与提取操作的时间复杂度为(log ),并可以常量时间复杂度的peek操作。二项堆提供了几种额外操作。斐波那契堆的插入、提取、修改元素优先级等操作具有分摊常量时间复杂度,,但删除操作的时间复杂度为(log )。Brodal queue(英语:Brodal queue)具有最糟糕情况下的常量复杂度但算法相当复杂因而不具有实用性。

对于整型、浮点型等具有有限值域的元素的数据类型,优先队列有更快的实现。

优先队列是计算机科学中的一类"容器数据类型"。

标准模板库(STL)以及1998年的C++标准确定优先队列是标准模板库的容器适配器模板。其实现了一个需要三个参数的最大优先队列:比较函数(缺省情况是小于函数less<T>)、存储数据所用的容器类型(缺省情况是向量vector<T>)以及指向序列开始和结束位置的两个迭代器。和标准模板库中其他的真实容器不同,优先队列不允许使用其元素类型的迭代器,而必须使用优先队列抽象数据类型的迭代器。标准模板库还实现了支持随机访问数据容器的优先队列--二叉最大堆。Boost C++库也在其中实现了堆结构。

Python的heapq模块实现了在链表基础上的二叉最小堆,queue模块将heapq模块包装实现了PriorityQueue类。

Java库中的PriorityQueue类实现了最小优先队列。

Go库中的container/heap模块实现了一个可以在任何兼容数据结构上构建的最小堆。

PHP标准库包括了一个优先队列SplPriorityQueue。

苹果的Core Foundation框架包括了一个最小堆结构CFBinaryHeap。

优先队列常用于操作系统的任务调度,也是贪心算法的重要组成部分。

相关

  • 本芴醇苯芴醇(Lumefantrine或benflumetol)是一种抗疟药,只会和蒿甲醚合并使用,称为复方蒿甲醚-苯芴醇(英语:Artemether/lumefantrine),有时也会用英文co-artemether表示。在1981年的青蒿素
  • 鸟脚亚目鸟脚亚目(Ornithopoda)是鸟臀目恐龙的一个演化支,它们起初是小型、二足、快速奔跑的草食性动物,后来种类与体型都逐渐变大、变多,直到它们成为白垩纪时代里最成功的草食性恐龙之
  • 社会福利福利主义主张政府收取缴纳高额的税收,并提供高福利乃至一手承办教育、卫生之类涉及公共服务的事业。一方面,福利主义国家有明显的社会主义性质,现代的福利国家主要由中左派政党
  • 第二十七条修正案宪法正文I ∙ II ∙ III ∙ IV ∙ V ∙ VI ∙ VII其它修正案 XI ∙ XII ∙ XIII ∙ XIV ∙ XV XVI ∙ XVII ∙ XVIII ∙ XIX ∙ XX XXI ∙ XXII ∙ XXIII ∙
  • 哥伦比亚总统哥伦比亚总统是哥伦比亚的国家元首和政府首脑。根据哥伦比亚在1991年制定的第九部宪法,总统是政府的行政首脑,是政府的最高负责人。总统亦是哥伦比亚的三军总司令。总统由人民
  • 黑额鸣冠雉黑额鸣冠雉(),又名黑胸鸣官鸟,是分布在巴西东南部的大西洋森林、阿根廷及巴拉圭的凤冠雉。由于猎杀及失去栖息地,它们的数量已开始变得稀少。黑额鸣冠雉是大型的鸟类,长63-74厘米,
  • 萨丁尼亚海萨丁尼亚海是地中海的一部分,位于西班牙的巴利阿里群岛和意大利的萨丁尼亚岛之间,最深点在梅诺卡岛西北面150公里,水深约3,000米。坐标:40°00′N 6°00′E / 40.000°N 6.000°
  • 天野正道天野正道(日语:天野 正道,1957年1月26日-)出生于日本秋田县秋田市,是一位日本作曲家、编曲家以及指挥家。他在东京国立音乐大学就读,1982年毕业,获得武冈赏。他的交响乐团作品充满着
  • 符竹庭符竹庭(1912年-1943年),江西广昌县人,抗日战争时期八路军著名将军,曾任一一五师教导二旅政治委员、滨海军区政委。1941年,任一一五师教导二旅政治委员,兼鲁南区党委书记。1942年,任滨
  • 毁灭战士:灭绝《毁灭战士:灭绝》(英语:)是一部2019年美国科幻动作恐怖片,由东尼·吉格里欧自编自导,改编自id Software开发的电子游戏《毁灭战士》。该游戏曾于2005年推出过改编电影,但反应不佳