首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优先级队列与队列

优先级队列与队列
EN

Stack Overflow用户
提问于 2016-11-28 06:50:34
回答 3查看 6.6K关注 0票数 5

优先级如何排队队列数据结构。由于它不遵循FIFO,所以不应该将其命名为优先级数组或优先级链接LIst,因为优先级队列不遵循像FIFO队列那样的方式

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-28 06:55:04

在优先级队列中,在优先级较低的元素之前提供具有高优先级的元素。‘,如果两个元素具有相同的优先级,它们将根据队列中的顺序服务,’我认为这将回答您的问题

票数 6
EN

Stack Overflow用户

发布于 2016-11-28 07:01:53

如果您查看大多数使用的实现,在一个简单的例子中,优先级队列本质上是堆--它们根据程序员定义的优先级以一种特定的方式排列--在一个简单的例子中,整数的升序或降序。

将优先级队列看作一个队列,而不是在添加元素时检索元素,而是根据它们之间的比较来检索它们。在你的教科书例子中,这种比较可以是简单的升序或降序。您可以从另一个StackOverflow答案的类比中理解ADT:

你在开一家医院病人要来了。工作人员中只有一名医生。第一个人走进来,他马上就上船了。接着,一个患感冒的人进来了,需要帮助。您将他添加到队列中,他将排队等待医生可用。接着,一个头上拿着斧头的人从门里走了进来。他被赋予了更高的优先权,因为他的医疗责任更高。所以感冒的人被撞到了队伍里。接下来,有人出现呼吸问题。所以,再一次,这个患感冒的人被优先考虑了。这在现实世界中被称为三位一体,但在这种情况下,这是一条医疗线路。 在代码中实现这一点将使用一个优先级队列和一个工作线程(医生)来执行对工作的消耗/单位(病人)的工作。

在实际场景中,您可能有等待CPU处理的进程,而不是病人。

读:When would I use a priority queue?

票数 3
EN

Stack Overflow用户

发布于 2021-10-20 22:21:05

在队列中,元素在一行中等待的时间的自然排序可以被认为是最公平的。当你排队等候某物时,先到先得。

然而,有时,某些元素有一些特殊之处,可能会建议它们比其他等待时间更长的元素更早地得到服务。例如,我们并不总是按照收到的顺序来阅读我们的电子邮件,但通常你会跳过时事通讯或朋友们的“搞笑”笑话,先阅读与工作相关的信息。

同样,当您设计一个应用程序或测试一个应用程序时,如果有一些bug,这些bug会被排序,并且团队根据bug的严重程度来处理这些bug。首先,总是会发现新的bug,因此新的项目将被添加到列表中。假设发现了一个令人讨厌的身份验证错误--你需要在昨天之前解决它!此外,bug的优先级会随着时间的推移而改变。例如,你的首席执行官可能会认为你是在追求主要使用浏览器X的市场份额,而下周五你就有了一个重要的功能发布,所以你真的需要在几天内解决这个问题。

当我们需要从动态变化的列表(例如要在CPU上运行的任务列表)中按一定顺序使用元素时,优先级队列特别有用,这样我们可以在任何时候获得下一个元素(根据某个标准),从列表中删除它,并且(通常)不再担心为其他元素修复任何事情。

这就是优先级队列背后的理念:它们的行为就像普通的普通队列,只是队列的前端是根据某种优先级动态确定的。优先权的引入给实施带来的差异是深刻的,足以引起一种特殊的数据结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40838574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档