优先队列

✍ dations ◷ 2025-11-25 01:14:24 #数据结构

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

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

其它可选的操作:

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

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

相关

  • 瘀斑瘀斑是指直径10毫米以上的皮下出血点。当身体被硬物捶击时,皮肤下的血管会破裂,造成血液流出到相邻的皮下组织,这些积聚在皮下组织的血液会在表皮外显现成瘀斑。通常小而痛淤斑
  • 豆科豆科(学名:Fabaceae,保留名:Leguminosae)植物属于真双子叶植物豆目,约有800属19,325种。为被子植物中相当庞大的一科,占了已知开花植物物种的7%。部分物种在经济上具有重要地位,该科
  • 10月13日10月13日是阳历一年中的第286天(闰年第287天),离全年的结束还有79天。
  • 斯特雷萨阵线斯特雷萨阵线(Stresa Front)是1935年4月14日在意大利马焦雷湖岸边小城斯特雷萨达成的协议,签署方有法国总理皮埃尔·赖伐尔、英国首相拉姆齐·麦克唐纳、及意大利首相墨索里尼,
  • 红水银阴谋论红水银(Red Mercury,或称红汞)是一种虚构的物质,传闻为苏联在冷战时期研制,通过纯水银和氧化汞锑放置在核反应堆内辐照二十天,则制造出的这种呈红色的廉价但辐射度极高的物料。传
  • 莫洛托夫计划莫洛托夫计划是1947年由苏联所创立的经济互助组织,是一项参与国与苏联的双边贸易协定,协助社会主义国家的经济发展。计划目标是提供重建物资援助给东欧国家,协助东欧各国重建经
  • 芳香族亲核取代反应芳香族亲核取代反应(Nucleophilic Aromatic Substitution reaction,SNAr)是亲核取代反应的一类,发生在芳香环上。当中一个亲核体取代了一个好的离去基团,例如在芳香环上的卤代烃
  • 克劳迪奥·蒙特威尔第克劳迪奥·乔瓦尼·安东尼奥·蒙特威尔第(意大利语:Claudio Giovanni Antonio Monteverdi,1567年5月15日-1643年11月29日),意大利作曲家、制琴师。出生于意大利北部克雷莫纳市的他
  • 大阪站大阪站(日语:大阪駅〔大阪驛〕/おおさかえき〔おほさかえき〕  */?)是一座位于日本大阪府大阪市北区,由西日本旅客铁道(JR西日本)所经营管理的铁路车站,也是日本关西地区最大都会
  • 哥哥的前半生《哥哥的前半生张国荣入门三十首》是华星唱片在1996年推出的一张张国荣精选专辑。 专辑主张收录张国荣在华星唱片时代的经典歌曲。张在八十年代初加盟华星后,事业一帆风顺,成