Java:Arrays.sort quicksort和mergesort

Ock*_*zor 11 java sorting

可能重复:
为什么java Arrays对不同类型使用两种不同的排序算法?

所以我正在阅读各种排序实现的Arrays 文档.我注意到的是,一些实现使用了调整的快速排序,而其他实现使用了修改后的mergesort.为什么会出现差异?

谢谢!

Eug*_*sky 24

Quicksort用于原始类型的数组,而mergesort用于Object []数组.

为什么归并用于该归并对象的主要原因是稳定的-它不会重新排序是相等的元素:http://en.wikipedia.org/wiki/Sorting_algorithm#Stability

对于原语,排序的稳定性是没有意义的,因为你无法区分两个相等的值.因此,使用quicksort(除了对对象数组进行排序时,执行mergesort).此外,quicksort可以在适当的位置完成,因此不需要分配另一个数组.

  • 也就是说,JDK 7不再使用mergesort - 它使用了神秘的[TimSort](http://en.wikipedia.org/wiki/Timsort)! (5认同)