JAVA中Arrays.sort()实现排序的具体原理是啥

.....这个真不好说 你得指定下具体的Java版本 实现是有区别的亲
■网友
切勿人云亦雲.public static void sort(Object a) { if (LegacyMergeSort.userRequested) legacyMergeSort(a); else ComparableTimSort.sort(a, 0, a.length, null, 0, 0); }這個是 jdk / openjdk / 8-b132 8u40-b25 6-b14 - 8u40-b25 / java.util.Arrays 中的源碼可以看到,在默認情況下使用的是TimSort. 也預留了傳統MergeSort.
■网友
看源代码,根据这个(java中Sort方法底层实现),应该是基于速排和优化的合并排。
■网友
【JAVA中Arrays.sort()实现排序的具体原理是啥】 在jdk7以前的版本中sort()的实现原理是:基本类型使用优化后的快速排序,其他类型使用优化后的归并排序, jdk7以后修改了排序策略:如果JVM启动参数配置了-Djava.util.Arrays.useLegacyMergeSort=true 那么就会执行上面所说的排序策略(优化的归并排序),否则将会执行TimSort排序。

■网友
Java中的这个方法根据参数不同选择的排序方案也不同,针对原始数据类型和引用的排序也不同,其实就是三向快速排序和优化的合并排序,三向快速排序针对的原始数据类型,而合并排序针对的是应用。总的来说,时间+空间换取稳定性。
■网友
你好!我记得他会首先判断数组中元素个数,如果小于等于七直接冒泡排序;如果大于七就从中间向两边分别冒泡排序,之后再总排序.


    推荐阅读