优先队列

✍ dations ◷ 2025-11-22 00:43:57 #数据结构

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

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

其它可选的操作:

有许多简单低效的实现。如用一个有序的数组;或使用无序数组,在每次取出时搜索全集合,这种方法插入的效率为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。

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

相关

  • 细胞连接细胞连接(或细胞间桥(intercellular bridge))是在一些多细胞生物例如动物的组织中存在的一种结构。细胞连接包括该相邻细胞之间或细胞和细胞外基质之间提供接触的蛋白质复合物
  • 颈卵器颈卵器,又称藏卵器,是某些植物产生及含有卵子或雌配子的多细胞配子体结构或器官。颈卵器有一个长颈和一个膨胀的基部。颈卵器一般长在植物叶状体的表面上。颈卵器在裸子植物的
  • 弹射弹射椅(Ejection seat),或称弹射座椅,是军用飞机及载人太空船飞行员用的座椅,可在紧急情况下将飞行员弹离飞行器并使其安全着陆的航空救生设备,太空船通常是配备逃逸塔,直接将乘员
  • 摩尔多瓦行政区划政治主题摩尔多瓦一级行政区共37个,包含32个区,3个直辖市,1个自治区(加告兹),以及摩尔多瓦声索的争议地区德涅斯特河沿岸自治领土单位。
  • 长江口长江口是长江在东海入海口的一段水域,从江苏江阴鹅鼻嘴起,到入海口的鸡骨礁为止,长约232公里。长江三角洲为冲积平原,由于泥沙成年累月地堆积造成新的陆地,长江的河口也一直在变
  • STAT31bg1· DNA binding · sequence-specific DNA binding transcription factor activity · signal transducer activity · ligand-activated sequence-specific DNA bin
  • 小行星8964小行星8964(8964 Corax)是一颗绕太阳运转的小行星,为主小行星带小行星。该小行星于1960年10月17日发现。小行星8964的轨道半长轴为2.1925380 UA,离心率为0.105。
  • 利昂霖李昂霖(1982年11月10日-),台湾男演员,曾使用利昂霖作为艺名。加拿大英属哥伦比亚大学UBC University of British Columbia 毕业,出生于台湾台北,曾在加拿大温哥华居住,现居于台湾台
  • 俄罗斯的阿富汗人俄罗斯的阿富汗人,是指生活在俄罗斯的阿富汗人,是阿富汗侨民的一部分。大约有15万名阿富汗人居住在俄罗斯,其中包括普什图人、塔吉克人和其他人。俄罗斯的阿富汗人中有三分之一
  • 太岚铁路太岚铁路是太原铁路局管内的一条支线铁路,为古交矿区镇城底煤矿的煤炭运输铁路,并服务于沿途城乡客运。东起太原市北郊的太原铁路枢纽汾河站,西至吕梁岚县,目前客运通车区段仅至