Java Arrays和Collections类的排序算法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java Arrays和Collections类的排序算法

Java Arrays和Collections类的排序算法

 2011/9/22 8:13:24  jbm3072  http://jbm3072.iteye.com  我要评论(0)
  • 摘要:在Java的Arrays和Collections类里,分别提供了对数组和List的排序算法。不过今天在看Arrays排序算法时,发现对float/long/int/char等进行排序时,使用的算法是快速排序;而对于Object数组排序则是使用的是合并排序(改进后的)。想了一下,原因很容易理解。快速排序是不稳定的算法,这意味着对于相同的元素经过排序后会出现位置调换的情况。而对于基本类型的数组,这个却无关紧要;而对于Object数组这个则很重要,因为大部分时间我们都需要一个稳定的算法
  • 标签:Java 算法

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

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

?

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

?

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

发表评论
用户名: 匿名