为了构建堆,我们使用java中的PriorityQueue类。有没有一种方法可以使用内置的库/类直接从O(N)中的数组构建堆,而不是在O(NlogN)中单独推送每个元素来构建堆?
发布于 2019-05-21 04:07:25
使用the constructor that takes a collection
new PriorityQueue<String>(Arrays.asList(yourArray));
一如既往,Java Docs没有提到任何关于复杂性的内容,但是阅读the source code可以发现OpenJDK使用了典型的O(n)
堆方法,而不是在循环中插入:
private void initFromCollection(Collection<? extends E> c) {
initElementsFromCollection(c);
heapify();
}
https://stackoverflow.com/questions/56227358
复制相似问题