当前位置: 代码迷 >> Eclipse >> Collections里的sort()方法到底是如何排序的,听说是自然排序,那又何谓自然排序?【回答详细准确再加分】
  详细解决方案

Collections里的sort()方法到底是如何排序的,听说是自然排序,那又何谓自然排序?【回答详细准确再加分】

热度:50   发布时间:2016-04-23 14:15:55.0
Collections里的sort()方法到底是怎么排序的,听说是自然排序,那又何谓自然排序?【回答详细准确再加分】
Collections里的sort()方法到底是怎么排序的,听说是自然排序,那又何谓自然排序?
如果是给字符串排序,又是怎么排?

------解决方案--------------------
所谓自然排序,就是数字按大小排序,字符按ascii码排序;字符串则是依次比较字符序列
------解决方案--------------------
jdk默认的排序使用的Merge sort。建议你看看jdk的源代码,在jdk安装目录的src.zip文件里。
------解决方案--------------------
由于参数不同,具体的方法也不一样,我就举一个例子

public static void sort(double[] a)对指定的 double 型数组按数字升序进行排序。 
虽然 < 关系式对不同数字 -0.0 == 0.0 返回的结果为 true,并且认为 NaN 值既不小于或大于任何浮点值,也不等于任何浮点值,甚至不等于它自身。但 < 关系式不能提供所有浮点值的整体排序。为了允许进行排序,此方法不使用 < 关系式来确定数字升序排序,而是利用 Double.compareTo(java.lang.Double) 来完成整体排序。此排序法不同于 < 关系式,其中 -0.0 被认为是小于 0.0 的值,并且 NaN 被认为大于其他任何浮点值。为了进行排序,所有 NaN 值都被认为是等效且相等的。 

该排序算法是一个经过调优的快速排序法,改编自 Jon L. Bentley 和 M. Douglas McIlroy 合著的 Engineering a Sort Function", Software-Practice and Experience Vol. 23(11) P. 1249-1265 (November 1993)。此算法在许多数据集上提供 n*log(n) 性能,这导致其他快速排序会降低二次型性能。 


参数:
a - 要排序的数组
  相关解决方案