如果我想将优先级队列存储为经排序的双向链接列表,那么以下时间复杂度是否正确?
插入新条目:O(n)
因为我必须遍历链表的每个元素,才能找到应将其插入的位置,以便始终对我的列表进行排序。
获取具有最高优先级的元素:O(1)
我可以按优先级的升/降顺序对列表进行排序,并保存列表的首尾。如果是这样,则获得最大优先级的元素应该是O(1),因为我们知道它的位置。
删除具有最大优先级的元素:O(1)
与上述逻辑相同
答案 0 :(得分:1)
除了事实之外,使用链接列表的优先级队列的想法效率不高(您可以编写最差的运行时复杂度日志(n()),数字是正确的。)
尽管如此,您可以在这里进行描述: “插入新条目:O(n)”
从技术上讲,插入为O(1),找到正确的位置就是需要O(n)的原因。因此,基本上,当您添加7个相同的项目时,它不会花费您7倍的时间,因为您只需要查找一次。