优先队列

✍ dations ◷ 2025-12-03 02:27:56 #数据结构

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

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

其它可选的操作:

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

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

相关

  • 联合国纪念活动联合国纪念活动,包括联合国国际日、国际周、国际年、国际十年和其他纪念活动,是为了来唤起国际社会对全球范围某个问题的兴趣或关注,从而推动相关问题的解决而在一段时间内举办
  • 神经突触突触(法语、英语、德语: Synapse)是神经元之间,或神经元与肌细胞、腺体之间通信的特异性接头。神经元与肌肉细胞之间的突触亦称为神经肌肉接头(neuromuscular junction)。中枢神
  • 贝尔实验室贝尔实验室(Nokia Bell Labs),最初是贝尔系统内从事包括电话交换机、电话电缆、半导体等电信相关技术的研究开发机构,后来陆续易主,现为诺基亚公司资产。总部位于美国新泽西州联
  • 约瑟夫·艾斯特拉达约瑟夫·埃赫西托·埃斯特拉达(Joseph Ejercito Estrada,1937年4月19日-),本名何塞·马塞洛·埃赫西多(José Marcelo Ejército),昵称埃拉普(Erap),菲律宾著名电影明星,后从政,历任市长
  • 斯温登斯温登区(Borough of Swindon)是英国西南英格兰的一个单一管理区,以斯温登为中心,是威尔特郡的一部分。1974年成立时名为Thamesdown。1997年4月1日管理层自威尔特郡议会独立,形成
  • 哈克贝利·芬历险记《哈克贝利·芬历险记》(英语:),又译为《赫克历险记》、《哈克历险记》、《顽童流浪记》,是一部美国著名作家马克·吐温的儿童文学作品,为美国文学史上相当重要的作品。小说开始于
  • 分子运动论分子运动论(英语:kinetic theory of gases,又称气体动力论)是描述气体为大量做永不停息的随机运动的粒子(原子或分子,物理学上一般不加区分,都称作分子)。快速运动的分子不断地碰撞
  • 次闭元音表内成对的元音分别为不圆唇/圆唇。次闭元音(near-close vowel、near-high vowel)是一种用于口语中的元音。次闭元音的特征类似于闭元音,同样是舌头的位置接近上颚,但不需闭元音
  • 奥托·雷曼奥托·雷曼(Otto Lehmann,1855年1月13日-1922年6月17日),德国物理学家,被誉为“液晶之父”。1855年1月13日,雷曼出生在德国康斯坦茨。从事自然科学工作的父亲从小就培养起他对晶体
  • 孟瑞孟瑞(英文:Oscar Meng,1988年12月26日-),朝鲜族,中国演员。毕业于北京电影学院表演系。多年来出演过多部电视剧及电影。2016年出演网络剧《不可抗力》谢炎一角后,逐渐为人熟悉。