【问题标题】:Priority Queue sqaure root run time优先队列平方根运行时间
【发布时间】:2013-04-29 20:49:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: priority-queue


    【解决方案1】:

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

    【讨论】:

    • 所以如果他遗漏了整数列表的“集合”,我们不能得出结论就是这样吗?在这种情况下,“设置”是什么意思?
    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2016-09-23
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多