当我知道PQ在时间复杂度方面会更好时,我什么时候会选择Collections.sort()而不是PriorityQueue呢?

最佳答案

轮询PriorityQueue的所有元素实际上是heap sortingCollections.sort()是使用merge sorting实现的。就时间复杂度而言,堆排序和合并排序是可比较的。两者都具有最佳情况,最坏情况和平均情况O(n log n)的时间复杂度。
在性能方面,这是wikipedia必须说的:
PriorityQueue不是用于排序,而是用于在更改的队列中获取最高优先级的元素。它也不会提高性能,也不会使您的代码易于使用PriorityQueue进行排序。因此,我建议您在排序时坚持使用Collections.sort()

关于java - PriorityQueue与Collections.sort,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22593116/

10-10 16:37