我被误导了一点,所以有点困惑。这就是我所理解的未排序的优先级队列。有人可以确认一下吗? 未排序的优先级队列是我们在末尾插入并根据优先级删除元素的队列(i,e;队列中的最小值)。
谢谢。
答案 0 :(得分:1)
优先级队列是一个抽象数据结构,它定义了方法get-min,push和pop-min,也可能是union。具体实现是否使用已排序的容器不应影响我们应该能够执行的操作。
有几种可能的实现,其中最流行的实现使用二进制堆(在某种程度上没有排序),但是一种方法也使用排序列表。我想也许在你听说unsorted priority queue
的时候,这个人可能意味着没有使用排序列表或其他已排序容器实现的优先级队列。
答案 1 :(得分:1)
数据结构中的基本队列首先以先到先服务(FIFO)的方式工作, 第一个元素插入到队列中,一个元素将在队列中提供或执行,最后一个元素将在最后提供或执行,此方法代表未排序的队列。
对于排序队列,它将对插入的元素进行排序,然后将它们作为排序方法执行
如果您添加了某种附加到队列的排序算法,它将作为算法工作。
了解更多信息:
http://en.wikipedia.org/wiki/Priority_queue
http://en.wikipedia.org/wiki/Sorting_algorithm
答案 2 :(得分:1)
队列和优先级队列之间存在概念差异。队列是先进先出的数据结构,允许有效访问队列的两端(头部和尾部)。优先级队列是一个抽象数据结构,它提供了一个getBestItem()函数,而没有具体说明如何(因此抽象)。
未排序的优先级队列可以指的是没有间歇性工作(没有元素组织)的PQ实现,并将getBestItem()实现为简单的线性搜索。这使得getBestItem()非常低效( O(n)),但插入/删除非常便宜( O(1))。如果插入/删除频繁且getBestItem()不是,则这可能是一个有效的选择。