PriorityQueue addAll()的复杂性

时间:2013-01-14 01:10:57

标签: java data-structures heap big-o priority-queue

PriorityQueue的addAll方法的复杂性是什么。它是一次添加一个元素导致O(n log n)还是使用构建堆进程在O(n)时间内用无序元素创建堆?

3 个答案:

答案 0 :(得分:7)

Javadoc似乎暗示 addAll继承自AbstractQueue ,其中是作为添加序列实施的。

这让我相信复杂性为O(mlogn) ,其中m是要插入的集合的大小。

答案 1 :(得分:3)

来自Priority Queue

  

...此实现为排队和出队方法提供了O(log(n))时间......

所以你只能假设n log(n)

然而 - 显然 - 这只是你能想到的。根据您计划使用的具体实施,您可能会找到一些可以改善您的问题的技巧。

答案 2 :(得分:2)

看看OpenJDK,看起来PriorityQueue继承了AbstractQueue的addAll实现,它迭代集合并调用每个元素的添加。

Source