当我知道PQ在时间复杂度方面会更好时,我什么时候会选择Collections.sort()
而不是PriorityQueue
呢?
最佳答案
轮询PriorityQueue
的所有元素实际上是heap sorting
。 Collections.sort()
是使用merge sorting
实现的。就时间复杂度而言,堆排序和合并排序是可比较的。两者都具有最佳情况,最坏情况和平均情况O(n log n)的时间复杂度。
在性能方面,这是wikipedia必须说的:
PriorityQueue
不是用于排序,而是用于在更改的队列中获取最高优先级的元素。它也不会提高性能,也不会使您的代码易于使用PriorityQueue
进行排序。因此,我建议您在排序时坚持使用Collections.sort()
。
关于java - PriorityQueue与Collections.sort,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22593116/