Collections.sort()点击进入:
点击sort()进入:
如果没有指定Comparator 进入Arrays.sort:
-
如果Comparator为null,则进入sort方法
-
看是否设置了LegacyMergeSort.userRequested为true 如果设置了则使用归并排序,如果未设置则使用TimSort(优化归并排序)
-
当
LegacyMergeSort.userRequested==true,采用legacyMergeSort -
否则采用ComparableTimSort
ComparableTimSort是改进后的归并排序,对归并排序在已经反向排好序的输入时表现为O(n^2)的特点做了特别优化。对已经正向排好序的输入减少回溯。对两种情况(一会升序,一会降序)的输入处理比较好(摘自百度百科)。