0

我正在参加数据结构考试,并且正在从复习问题列表中进行准备。我坚持的问题如下:

“假设你的朋友来找你,声称他发明了一个超快的基于比较的优先级队列。优先级队列的速度如下(n是当前优先级队列中的项目数):a.插入一个新项目在 O(sqrt(logn)) 时间内 b. 在 O(sqrt(logn)) 时间内从队列中提取(删除并返回)最小的项目。

解释为什么你的朋友一定在撒谎:”

据我了解,标准优先级队列的运行时间是 O(1) 和 O(n) 用于提取。我无法理解这个问题。任何帮助将不胜感激。

4

1 回答 1

0

O(1) 和 O(n) - 它的未排序数组实现,但您可以对队列进行排序或部分排序(例如二进制堆)。二叉堆的最佳实现是插入或选择 O(log(N))。但是对于某些特殊情况,您可以达到 O(log(N)^1/2) 甚至 loglog(N) - 例如对于整数。但是你的朋友没有说任何关于设置的事情——这就是他在撒谎的原因。

于 2013-04-29T20:59:59.013 回答