PriorityQueue的addAll方法的复杂性是什么。它是一次添加一个元素导致O(n log n)还是使用构建堆进程在O(n)时间内用无序元素创建堆?
答案 0 :(得分:7)
Javadoc似乎暗示 addAll
继承自AbstractQueue ,其中是作为添加序列实施的。
这让我相信复杂性为O(mlogn)
,其中m是要插入的集合的大小。
答案 1 :(得分:3)
...此实现为排队和出队方法提供了O(log(n))时间......
所以你只能假设n log(n)
。
然而 - 显然 - 这只是你能想到的。根据您计划使用的具体实施,您可能会找到一些可以改善您的问题的技巧。
答案 2 :(得分:2)
看看OpenJDK,看起来PriorityQueue继承了AbstractQueue的addAll实现,它迭代集合并调用每个元素的添加。