Arrays.sort在Java中使用什么排序算法?它会根据操作系统或输入大小等动态变化吗?
答案 0 :(得分:4)
您可以从源代码中看到它在OpenJDK上的作用。对于基本类型,它使用短数组的插入排序和较长的数组的修改快速排序;和对象数组的时间排序。
我没有看到操作系统如何影响排序。
答案 1 :(得分:0)
查看Arrays.sort
的文档:
实施说明:此实施是稳定的,适应性的, 迭代合并,需要远远少于n lg(n)的比较 当输入数组部分排序时,同时提供 输入数组时传统mergesort的性能 随机排序。如果输入数组几乎排序,那么 实施需要大约n次比较。临时存储 要求从几乎排序的输入数组的小常量变化 对于随机排序的输入数组的n / 2个对象引用。
实施同样有利于升序和降序 在其输入数组中排序,并可以利用升序和 在同一输入数组的不同部分中降序排列。它是 非常适合合并两个或多个排序数组:简单地连接 数组并对结果数组进行排序。
该实现改编自Tim Peters的Python列表 (TimSort)。它使用了Peter McIlroy的“乐观排序”中的技术 和“信息理论复杂性”,“第四次会议论文集” 年度ACM-SIAM离散算法研讨会,第467-474页,1月 1993。
查看源代码:Arrays.sort
。
答案 2 :(得分:0)
sort
方法已超载。
对于Java 7,请查看从here开始的更多类型的实现说明。