问题描述
我似乎找不到任何信息来回答我的问题。因此,Java PriorityQueue是使用堆构建的。堆的插入和删除时间为O(logn),因此,如果我要进行的堆排序为O(nlogn)。
但是在创建堆期间,它只需要O(n)时间。所以可以说我把线放在
PriorityQueue<Character> heap = new PriorityQueue<>(list);
Java是使用值构建数据结构,以便使其O(n)还是随后插入以便使其O(nlogn)?
解决方法
从未排序的列表中初始化它时,它使用O(n)heapify
方法。