【发布时间】:2015-07-08 19:02:01
【问题描述】:
有人知道java.util.stream.Stream<T>.sorted() 的时间复杂度是多少吗?
【问题讨论】:
-
嗯,
Stream是一个接口。这完全取决于实现。
标签: java sorting time-complexity java-stream
有人知道java.util.stream.Stream<T>.sorted() 的时间复杂度是多少吗?
【问题讨论】:
Stream 是一个接口。这完全取决于实现。
标签: java sorting time-complexity java-stream
嗯,sorted() 本身就是 O(1),因为它是一个不消耗流的中间操作,而只是向管道添加一个操作。
一旦终端操作使用了流,就会发生排序
Arrays.sort() (O(n log n))Arrays.parallelSort() (O(n log n))【讨论】:
从 JDK 8 开始,在标准流 API 实现中也用于顺序排序的主要排序算法是 TimSort。最坏的情况是O(n log n),但如果数据被预排序(正向或反向)或部分预排序(例如,如果你连接两个排序列表并对它们进行排序),它的工作速度非常快(O(n) 和非常小的常数)再次)。
【讨论】: