优先队列

✍ dations ◷ 2025-12-01 00:01:21 #数据结构

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

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

其它可选的操作:

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

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

相关

  • 养老院老人院也叫安老院、养老院、安养院,是一些社区服务的机构,是为老人提供住宿和日常起居照顾的地方,工作人员分为社工、护士、医生、义工及助理员等,提供的是老人服务。老人院因为
  • 哈德克努特哈德克努特(Hardeknud,意为强壮的克努特;1018年-1042年6月8日),也被后世称为丹麦的克努特三世(Knud 3.)和英格兰的克努特二世(Canute II),1035年至1042年间为丹麦国王,1040至1042年间为
  • 刘太平刘太平(1945年11月18日-),数学家,中央研究院院士。1968年国立台湾大学数学系毕业,1973年美国密歇根大学数学所博士。曾任美国斯坦福大学数学系教授、中央研究院数学研究所所长,现任
  • 植树节植树节,是一些国家为激发人们爱林、造林的感情,促进国土绿化,保护人类赖以生存的生态环境,通过立法确定的节日。近代最早设立植树节的是美国的内布拉斯加州。1872年4月10日,莫顿
  • 蜘蛛猴蜘蛛猴属(学名:Ateles),统称为蜘蛛猴或蜘蛛猿,蜘蛛猴科的一属,生活于墨西哥以南到巴西的南部到巴西的中南美洲广大地区的热带雨林中。与绒毛蛛猴属是近亲。是一种很难捕捉的小型动
  • 二氯化钒二氯化钒是一种无机化合物,化学式为VCl2,它是苹果绿色固体,可溶于水,形成紫色溶液。溶于乙醇和乙醚分别形成蓝色和绿色的溶液。二氯化钒固体可由三氯化钒的热分解制备,产物为剩余
  • 鬃积雨云鬃积雨云(学名:Cumulonimbus capillatus,缩写: ),是积雨云的一种。鬃积雨云的顶部具有类似卷云的冰晶结构,即呈纤维状或条纹状,外观形似砧板、鬃毛或大片不规则的白色毛丝。在其顶
  • 恩里克·培尼亚·涅托5恩里克·培尼亚·涅托(西班牙语:Enrique Peña Nieto;西班牙语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sa
  • 阿玛斯阿玛斯(A.H. Almaas),是哈弥·阿里(A. Hameed Ali)的笔名。1944年生于科威特。作者、灵性导师,书写及教导关于以现代心理学为基础的灵性开展,并将此治疗称为“钻石途径”。The Diam
  • 大白菇蕈伞凸面大白菇(学名:),俗称乳白脆褶(milk-white brittlegill),是一种担子菌门真菌,隶属于俗称脆褶()的红菇属。这种真菌呈白色,菌盖有着棕色的斑纹,且菌柄短小稳健。这种真菌可供食用,但