优先队列

✍ dations ◷ 2025-09-10 08:44:55 #数据结构

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

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

其它可选的操作:

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

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

相关

  • 炼金术炼金术是中世纪的一种化学哲学的思想和始祖,是当代化学的雏形。其目标是通过化学方法将一些基本金属转变为黄金,制造万灵药及制备长生不老药。现在的科学表明这种方法是行不通
  • 斯波尔丁县斯波尔丁县(Spalding County, Georgia)是美国乔治亚州西北部的一个县。面积517平方公里。根据美国2000年人口普查,共有人口58,417人,2005年增至61,289人。县治格里芬(Griffin)。成
  • PACSPACS可以指:
  • font color=#ffffff中国高等教育/font语言 - 文化 - 体育 - 节日 政府 - 政治 - 法律 - 经济 艺术 - 文学 - 舞蹈 - 戏曲中华人民共和国高等教育包括普通高等教育、成人高等教育和高等教育自学考试,属于中华
  • 依诺肝素钠依诺肝素(商品名Lovenox、Xaparin和Clexane)是一种低分子量肝素。它是一种用于预防和治疗深静脉血栓或肺栓塞的抗凝血剂,其用法为皮下注射(由卫生保健提供者或患者)。 氯茚二酮(英
  • 硝酸肼镍硝酸肼镍(NHN)是一种无机化合物,化学式为(NO3)2,是一种含能材料。将水合肼缓慢滴加至65℃的硝酸镍溶液中,滴加时搅拌。温度下降后分离产物并干燥。硝酸肼镍难溶于水、乙醇、丙酮,
  • 多和田任益多和田 秀弥(日语:たわだ ひでや、1993年11月5日-)是日本大阪府出生的男性演员及模特儿。目前隶属于GVjp。到了2015年,他在特摄作品《手里剑战队忍忍者》之中,他的角色为“金治・
  • 翱翔真豹鲂翱翔真豹鲂�(学名:)为辐鳍鱼纲鲉形目飞角鱼亚目飞角鱼科的其中一种,是热带至温带的鱼类,分布在大西洋的两岸,北至北卡罗莱纳州及南至巴西,及由英伦海峡至安哥拉。翱翔真豹鲂�的胸鳍十
  • “茂后”烯烃聚合催化剂“茂后”烯烃聚合催化剂(英语:Post-metallocene catalyst),这里的“茂后”(Post-metallocene)是指那些自1980年沃尔特·卡明斯基(Walter Kaminsky)发现茂基金属催化剂后出现的那些相
  • 爱德华·弥额尔·伊根爱德华·弥额尔·伊根(英语:Edward Michael Egan;1932年4月2日-2015年3月5日)是天主教美国籍司铎级枢机,曾是纽约总教区总主教。伊根于1936年6月26日在美国伊利诺伊州库克县芝加哥