使用Collections.sort()
方法和我对List
进行排序的实现有什么区别?哪个更快?
public static void listSortingDoubleForLoop(List<Integer> list)
{
for (int i = 0; i < list.size(); i++) {
for (int j = i+1; j < list.size(); j++) {
if (list.get(i).compareTo(list.get(j)) > 0) {
Collections.swap(list, i, j);
}
}
}
}
答案 0 :(得分:3)
你的两个嵌套for循环需要二次运行时间(即O(n 2 ))。
Collections.sort()
的JDK实现使用更高效的O(nlogn)排序算法。
例如,以下是JDK 8的实现说明:
此实现是一个稳定的,自适应的迭代合并输出,当输入数组部分排序时,需要远小于n lg(n)比较,同时提供传统合并的性能当输入数组随机排序时。如果输入数组接近排序,则实现需要大约n次比较。
传统合并排序的性能是O(nlog(n))。