2012-07-22 79 views
-3

只需要知道的操作时间,什么是优先级队列的预期操作时间Eexpected一个优先级队列

为O(n)O(LG N)或O(2)或O(1)或O- (3)

+1

对于什么操作? – Thilo 2012-07-22 10:18:22

+0

@Thilo在所有,我的意思是所有操作 – user1419170 2012-07-22 10:19:37

+3

O(2)和O(3)没有意义。大O符号将删除公式中的任何常数来计算复杂度,因此它们与O(1)相同。如果不变,那么你不应该使用Big-O符号(至少在最高期限内)。 – nhahtdh 2012-07-22 10:19:43

回答

4

然后阅读the documentation

实现注意事项:此实现提供了O(日志(n))的时间 的入队和dequeing方法(报价,民意调查显示,删除(),并添加); 线性时间为remove(Object)和contains(Object)方法;和 检索方法的恒定时间(peek,element和size)。

+0

无赖。现在他必须检查他的三个选项:O(log n),O(n),O(1) – Thilo 2012-07-22 10:22:34

+0

优先级队列。它需要保持某种结构以找到最高优先级的元素。 – 2012-07-22 10:23:36

0

的PriorityQueue具有以下主要方法:

  • 添加(E)/提供(E) - 添加元素e队列:O(的log(n))
  • PEEK() - 得到排序队列的第一个元素:O(1)
  • pool() - 获取排序队列的第一个元素并将其从队列中移除:O(log(n))
  • remove(e) - 删除元素e从列表O(log(n))
  • 包含 - 检查队列是否包含元素e:O(n)

其中n表示队列中元素的数量。