我正在进行数据结构考试,我正在准备一系列复习问题。我坚持的问题如下:
“假设你的朋友来找你并声称他发明了一个基于超快速比较的优先级队列。优先级队列的速度如下(n是当前优先级队列中的项目数): 一个。在O(sqrt(logn))时间插入一个新项目 湾在O(sqrt(logn))时间内从队列中提取(删除并返回)最小的项目。
解释为什么你的朋友必须撒谎:“
根据我的理解,标准优先级队列的运行时间是O(1)和O(n)用于提取。我无法理解这个问题。任何帮助将不胜感激。
答案 0 :(得分:0)
O(1)和O(n) - 它的未排序数组实现,但您可以对队列进行排序或部分排序(例如二进制堆)。 二进制堆的最佳实现有插入或选择O(log(N))。但是对于某些特殊情况,您可以达到O(log(N)^ 1/2)甚至loglog(N) - 例如对于整数。但是你的朋友没有说出关于集合的事情 - 这就是他说谎的原因。