【问题标题】:Time complexity of storing priority queue as a doubly linked list将优先级队列存储为双向链表的时间复杂度
【发布时间】:2018-12-02 02:01:19
【问题描述】:

如果我想将优先级队列存储为排序的双向链表,那么以下时间复杂度不正确吗?

  • 插入一个新条目:O(n)

    因为我必须遍历链表的每个元素以找出它应该插入的位置,以便我的列表始终排序。

  • 获取最大优先级的元素:O(1)

    我可以让我的列表按优先级升序/降序排序,并保存列表的头部和尾部。如果这是真的,那么获取具有最大优先级的元素应该是 O(1),因为我们知道它的位置。

  • 删除具有最大优先级的元素:O(1)

    同上逻辑

【问题讨论】:

    标签: big-o priority-queue doubly-linked-list


    【解决方案1】:

    除此之外,使用链表的优先级队列是一个有点低效的想法(你可以将最差的运行时复杂度设为 log(n()),你的数字是对的。

    不过,您可以在这里做一个定义: "插入一个新条目:O(n)"

    从技术上讲,插入是 O(1),找到正确的位置需要 O(n)。所以基本上,当你添加 7 个相同的项目时,它不会花费你 7 倍的时间,因为你只需要查找一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      相关资源
      最近更新 更多