`
jbm3072
  • 浏览: 209114 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Arrays和Collections类的排序算法

阅读更多

在Java的Arrays和Collections类里,分别提供了对数组和List的排序算法。不过今天在看Arrays排序算法时,发现对float/long/int/char等进行排序时,使用的算法是快速排序;而对于Object数组排序则是使用的是合并排序(改进后的)。

想了一下,原因很容易理解。快速排序是不稳定的算法,这意味着对于相同的元素经过排序后会出现位置调换的情况。而对于基本类型的数组,这个却无关紧要;而对于Object数组这个则很重要,因为大部分时间我们都需要一个稳定的算法,而合并排序恰好满足这一特性。所以对原始类型数组采用了快速排序,对于Object数组采用了合并排序。

 

而在Collections提供的排序算法也是合并排序。

 

当然JAVA使用的合并排序、快速排序与教科书上当然不一样。他们对排序算法进行了优化。我们可以看看源代码来看看java是怎么实现排序的。

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics