优先队列

✍ dations ◷ 2024-10-18 23:22: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。

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

相关

  • 右旋兰索拉唑右旋兰索拉唑(dexlansoprazole、INN,商品名 Kapidex,Dexilant、右兰索拉唑、埃索美拉唑镁,中文商标名:得喜胃通 60毫克/缓释胶囊)是一种质子泵抑制剂(PPI)。由日本武田药品销售,可由
  • MIT Technology Review《麻省理工科技评论》(英语:MIT Technology Review)是由麻省理工学院于1899年创刊的杂志。 它侧重报道新兴科技和创新商业,专注于科技的商业化和资本化。它的读者包括高级管理人
  • 比萨拉比亚地区苏联占领比萨拉比亚和北布科维纳始于1940年6月22日法国被德国占领后,6月26日,苏联向罗马尼亚发出最后通牒,迫使罗马尼亚割让了比萨拉比亚、北布科维纳地区以及赫尔扎地区,该地区
  • 按劳分配讨论会1977年至1978年,中国经济理论界进行了四次全国按劳分配问题理论讨论会,讨论了按劳分配和资产阶级法权问题,最终否认按劳分配与资产阶级、资本主义关联。1977年春,国家计委经济研
  • 吴越文化吴越文化,又称“江浙文化”,是指江浙地区的地域文化,其范围大致包括今日的苏南、江西东北的上饶地区皖南和浙江省及上海市,基本与整个吴语方言区(包括有系属争议的徽语)相吻合。吴
  • 马来群岛 (专著)《马来群岛》()是英国博物学家阿尔弗雷德·拉塞尔·华莱士所著的一本游记,其记录了他在1854年至1862年期间对马来群岛南部的科学考察,包括马来西亚、新加坡、印尼群岛、新几内亚
  • 塞姆南省塞姆南省(波斯语:استان سمنان)是伊朗三十一个省份之一。面积96,816公里,在所有省份中排行第6。人口约589,512(2005年数据);首府位于塞姆南市。塞姆南省位于伊朗北部;北
  • 佐藤太一佐藤太一(1977年8月23日-),前日本足球运动员。
  • 具托大鹅膏菌 Peck (1895)美味具托大鹅膏菌(学名:Amanita velosa),俗称春天鹅膏菌(springtime amanita)和甘苦参半的橙色无环鹅膏菌(bittersweet orange ringless amanita),是属于鹅膏菌属的一种
  • 台湾大学共同三松台湾大学共同三松,是位于国立台湾大学共同教学馆前的三株琉球松,属于台大十二景之一。共同教学馆为保护这三棵琉球松,架设了高架平台,并以木栈道连结。因台大十二景票选活动,三棵