1. 基本数据类型的排序
对于基本数据类型,Arrays.sort 方法使用了 双基准快速排序(Dual-Pivot Quicksort):

- 特点:
- 该算法在每次分区时选取两个基准元素,而不是一个,从而可以一次性将数组划分成三个区间.
- 这种方式在某些情况下可以减少比较次数,提高效率。
- 该实现是针对 Java 中的基本类型作了优化,具有 O(n log n) 的平均时间复杂度。
2. 对象数组的排序
对于对象数组(如 String、Integer 等),Arrays.sort 使用的算法是 归并排序(Merge Sort):

-
特点:
- 归并排序是一个稳定的排序算法,意味着相等元素在排序后相对位置不变。
- 归并排序的时间复杂度为 O(n log n),并且在处理大规模数据时性能稳定。
- 它使用分治法的理念,将数组分成两部分,分别排序后再合并。
-
稳定性:由于使用归并排序,对象类型的排序是稳定的。
-
基本数据类型:Arrays.sort 使用双基准快速排序,时间复杂度为 O(n log n)。
-
对象数组:Arrays.sort 使用归并排序,时间复杂度也是 O(n log n),且是稳定排序。