优先队列

✍ dations ◷ 2025-10-21 19:14:22 #数据结构

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

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

其它可选的操作:

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

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

相关

  • 杀菌药杀菌药(英语:bactericide agent/drug)是指具有能将细菌杀灭药效的抗菌药物。抑菌药是与杀菌药相对的一个概念。抑菌药与杀菌药的不同之处在于抑菌药通过抑制细菌增殖发挥药效,而
  • 二氧化三碳丙二烯-1,3-二酮二氧化三碳是一个无色刺激性气体,化学式为C3O2,分子中含有四个累积双键。它与CO、CO2、C2O等其他碳氧化物有重要联系。1873年,Brodie通过对一氧化碳放电,首次制
  • 哈特韦尔利兰·哈里森·“李”·哈特韦尔(英语:Leland Harrison "Lee" Hartwell,1939年10月30日-),美国凤凰城亚利桑那州立大学可持续发展学院教授,西雅图福瑞德哈金森肿瘤研究中心前总裁暨
  • Serratia marcescens黏质沙雷菌(学名:Serratia marcescens)又称灵杆菌,属于耶尔森菌科(英语:Yersiniaceae)沙雷菌属(英语:Serratia),是一种革兰氏阴性、兼性厌氧性杆菌,亦是一种条件致病菌,于1819年在意大利
  • 搜狐搜狐(NASDAQ:SOHU),是一家互联网中文门户网站。1995年,搜狐创始人张朝阳从美国麻省理工学院毕业回到中国,利用风险投资创建了爱特信信息技术有限公司,1998年正式推出搜狐网。2000年
  • 瘘(拉丁语:Fistula,或称瘘管)是体表上皮细胞与内脏或深层组织之间形成的病理性管道,有内口与外口。瘘管的外口,又称为漏,是流脓水,淋漓不断,不能收口的溃疡疮口。而有时,为了达到对某
  • 2017年世界大学生运动会第二十九届夏季世界大学生运动会(英语:XXIX Summer Universiade,简称2017年台北大运会或台北大运会)于2017年8月19日至8月30日在中华民国台北市举行,为台湾首次举办世界大学生运
  • 深夜加油站遇见苏格拉底 (电影)《深夜加油站遇见苏格拉底》(英语:)是一部2006年德国与美国合拍的剧情片,由维克多·沙尔瓦执导,斯科特·马其洛兹、尼克·诺特与艾咪·史玛特主演。电影改编自丹·米尔曼的1980年
  • 拿骚-锡根的约翰·毛里茨拿骚-锡根的约翰·毛里茨 ( 荷兰语:Johan Maurits van Nassau-Siegen即“拿骚-锡根的约翰·毛里茨”, 德语:Johann Moritz von Nassau-Siegen即“拿骚-锡根的约翰-莫里茨”,英语:J
  • 德国联邦园艺博览会德国联邦园艺博览会(德语:Bundesgartenschau),简称BUGA,是两年一度于德国举办的国际园艺博览会。