优先级队列VS队列

时间:2016-11-28 06:50:35

标签: data-structures queue priority-queue

优先级如何排队队列数据结构。由于它不遵循FIFO,因此不应将其命名为Priority Array或Priority Linked LIst,因为优先级队列不遵循类似FIFO队列的方式

2 个答案:

答案 0 :(得分:3)

在优先级队列中,在具有低优先级的元素之前提供具有高优先级的元素。 ' 如果两个元素具有相同的优先级,则会根据队列中的顺序提供服务 我想这会回答你的问题

答案 1 :(得分:2)

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

将优先级队列视为一个队列,而不是根据添加元素的时间检索元素,而是根据它们相互比较的方式检索它们。在教科书示例中,此比较可以简单地按升序或降序排列。您可以从另一个StackOverflow答案的类比中理解ADT:

  

你正在经营一家医院,病人正在进来。这里只有一家   医生在工作人员。第一个男人走了进来 - 他马上就服完了。   接下来,感冒的男人进来需要帮助。你加他   排队等候医生排队等候。   接下来,一个头上戴着斧头的男人穿过门。他是   因为他是更高的医疗责任而被赋予更高的优先权。   所以患感冒的男子排成一列。接下来,有人来了   有呼吸问题。所以,感冒的男人又一次   优先考虑。这在现实世界中称为触发 -   但在这种情况下,它是一条医疗线。

     

在代码中实现它将使用优先级队列和工作者   线程(医生)对消耗品/工作单元进行操作   (患者)。

在实际情况中,您可能有进程等待CPU处理,而不是患者。

读: When would I use a priority queue?