12

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

因此,我正在阅读有关各种排序实现的 Arrays文档。我注意到一些实现使用了调整过的快速排序,而另一些则使用了修改后的合并排序。为什么会出现差异?

谢谢!

4

1 回答 1

25

快速排序用于原始类型数组,而合并排序用于 Object[] 数组。

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

对于原语,排序的稳定性是没有意义的,因为您无法区分两个相等的值。因此,使用了快速排序(除非对对象数组进行排序,对其执行合并排序)。此外,快速排序可以就地完成,因此无需分配另一个数组。

于 2012-04-20T18:37:45.423 回答