Blo*_*oke 5 java sorting
请问Collections.sort(list)检查,如果list已经排序或者是它也许O(1)其他原因? 或者,将标志排序并将其设置为true/ false在调用sort()/向列表中添加元素时,这是一个好主意吗?
Collections.sort(list)
list
true
false
sort()
Aid*_*anc 9
如何在不查看列表的情况下确定是否排序?它不会O(1).确定列表是否已排序至少需要O(n).
O(1)
O(n)
这将意味着如果Collections.sort确实需要检查列表是否排序,那么每个排序操作都需要平均O(n) + O(n log n).
Collections.sort
O(n) + O(n log n)
Voo*_*Voo 6
实际上,对于Java7,Java已从mergesort切换到TimSort(以python开发人员Tim Peters的名字命名,后者首先为cpython实现了它)来执行某些排序任务。
虽然不是O(1),但使用TimSort排序已排序或部分排序的列表要比对完全随机的数据集排序要有效得多(对于后者,没有办法比O(n log n)比较排序更有效,对于不是随机数据)。
O(n log n)
归档时间:
13 年,4 月 前
查看次数:
1675 次
最近记录: