优先队列

✍ dations ◷ 2025-12-07 20:43:11 #数据结构

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

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

其它可选的操作:

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

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

相关

  • 约翰·道尔顿约翰·道尔顿(英语:John Dalton,/ˈdɔːltən/,1766年9月6日-1844年7月27日),英国皇家学会成员,化学家、物理学家。近代原子理论的提出者,对色盲亦有研究。道尔顿生于坎伯兰郡伊格斯
  • Diarrhea腹泻(俗称拉肚子,广东俗称肚痾,台语俗称漏屎,中医称之为泄泻,英语:diarrhea, diarrhœa来自希腊语:διάρροια,包含两个字根:“διά /dia,经过”,以及“ῥέω/rheo,流动”)的定
  • 保罗·史塔曼兹保罗·史塔曼兹(英文:Paul Stamets,1955年7月17日-)是美国的一名真菌学家、作家与真菌修复和药用真菌(英语:Medicinal fungi)的提倡者。保罗·史塔曼兹于1979年毕业于长青州立大学(英
  • 旗鱼旗鱼科 Istiophoridae 剑旗鱼科 Xiphiidae旗鱼又称为马林鱼,是一种海中大型掠食性鱼类的总称。大型的种类可超过4米长。吻部细长。分布于所有主要大洋。以其他鱼类为食。旗鱼
  • 胸甲骑兵胸甲骑兵(Cuirassier)是装备了胸甲、马刀和火器的骑兵,最早出现在15世纪后期的欧洲。这一兵种继承了中世纪重骑兵在战场上的地位,主要活跃在16世纪中期至20世纪初的欧洲战场上。
  • 僧面猴科僧面猴科(学名:Pitheciidae)是新世界猴的一科,包括僧面猴属、丛尾猴属、秃猴属和伶猴属。
  • 丁世均丁世均(韩语:정세균;1950年11月5日-)是一名大韩民国政治人物,共同民主党籍国会议员,现任大韩民国国务总理,前任国会议长。出身于全罗北道镇安郡,就读全州新兴高等学校,其后升读高丽大
  • 何钧何钧(1441年-1510年),字仲衡,河南承宣布政使司河南府陕州灵宝人,明朝政治人物、同进士出身。早年出身国子生,后进河南乡试第二十七名。成化十一年(1475年),参加乙未科会试,得贡士第二十
  • 会话发起协议会话发起协议(Session Initiation Protocol,缩写SIP)是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多
  • 固体潮固体潮也称陆潮,是指在太阳、月球等天体引力作用下,固体地球产生周期性变化的现象。因为固体地球具有一定弹性,所以在受到其他天体的引力时,跟海洋一样会产生变形。这些变形的实