将优先级队列出列

时间:2011-06-14 13:19:48

标签: priority-queue

从优先级队列中出列的元素遵循以下规则:

优先级[i]> =优先级[i - 1]

但是,如果许多元素具有相同的优先级,它们应以什么顺序出列? 首先排队的元素应该首先出列还是不重要? 我知道这很可能取决于实现和使用,但我正在寻找教科书优先队列答案。

2 个答案:

答案 0 :(得分:1)

队列绝对应该是FIFO,这就是它的本质。优先级队列稍微改变了队列方面,因为它允许更高优先级的项目优先于较低优先级项目,但这不应该改变队列的基本性质。

我见过自称为队列但不遵循FIFO规则的实现。我更喜欢使用不同的名称来更好地指定行为(例如优先行李)。

在队列中(即使是优先级),具有相同优先级的项目应按照插入顺序提取。

换句话说,插入A2 B2 C2 D1(数字是优先级)应该导致处理为D1 A2 B2 C2

答案 1 :(得分:0)

没有教科书答案。如果没有任何其他信息,则可以作为直接FIFO(在相同优先级的项目内),或未定义或其他行为来完成。

其他实现为enqueuer提供了指定在出队以断开关系期间可以使用的附加信息的能力。