Java:Arrays.sort quicksort和mergesort

时间:2012-04-20 18:30:01

标签: java sorting

  

可能重复:
  Why java Arrays use two different sort algorithms for different types?

所以我在各种排序实现上阅读了数组doc。我注意到的是,一些实现使用了调整的快速排序,而其他实现使用了修改后的mergesort。为什么会出现这种差异?

谢谢!

1 个答案:

答案 0 :(得分:22)

Quicksort用于基本类型的数组,而mergesort用于Object []数组。

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

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