我在算法手册中看到了关于优先级队列的“无望挑战”:
“O(1)insert,delete-min和reduce-key。为什么不可能?”
是不是因为唯一的方法是使用某种堆来实现它,而堆总是需要logn time to delete-min(即使是摊销的)?
答案 0 :(得分:2)
我假设众所周知的事实是排序n个整数需要时间n * log(n)并且我假设delete-min实际上找到了最小值(并且可以,例如返回它)。
对于矛盾,假设我们有一个数据结构,例如你描述的数据结构。然后,为了对n个整数进行排序,我们首先将它们全部插入到数据结构中,从而花费时间O(n)。然后我们反复删除-min直到结构为空。这给了我们时间O(n)的排序整数,给我们一个矛盾。因此,该数据结构不可能存在。