Java优先级队列如何工作?

时间:2020-10-22 05:28:25

标签: java data-structures heap priority-queue

我似乎找不到任何信息来回答我的问题。因此,Java PriorityQueue是使用堆构建的。堆的插入和删除时间为O(logn),因此,如果我要进行的堆排序为O(nlogn)。

但是在创建堆期间,它只需要O(n)时间。所以可以说我把线放在

PriorityQueue<Character> heap = new PriorityQueue<>(list); 

Java是使用值构建数据结构,以便使其O(n)还是随后插入以便使其O(nlogn)?

1 个答案:

答案 0 :(得分:1)

您随时可以检查来源:http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/PriorityQueue.java

从未排序的列表中初始化它时,它使用O(n)heapify方法。

相关问题