【问题标题】:Time for priority queues?优先队列的时间?
【发布时间】:2012-06-21 17:23:36
【问题描述】:
  • 一个优先级列表需要多长时间才能构建一个包含 n 个节点的列表?它是如何在上述时间内完成的?

  • delete-min 函数(检索最小元素并将其从列表中删除)需要多长时间?它是如何在上述时间内完成的?

【问题讨论】:

  • 优先队列的实现方式是什么?排序列表?未排序的列表?堆?

标签: data-structures computer-science


【解决方案1】:

取决于您如何构建优先级队列。如果您使用的是堆结构,则需要 nlogn 来构建优先级队列。我记得建立一个最小堆的方法也可以在 O(N) 中完成。查看 CLRS 了解更多信息。

查看堆结构以了解它是如何构建堆结构的。基本上你的比较器将是节点的优先级。

delete-min 需要 O(logn)。再看堆数据结构。

http://en.wikipedia.org/wiki/Heap_%28data_structure%29

您也可以将链表用于优先级队列。对于链表,delete min 也是常量。但是根据您的输入,构建优先级队列可能会上升到 O(N^2)。

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 2018-03-13
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多