Java:使用sort方法对整个数组或部分数组进行排序的问题

下列代码对数值型数组和字符型数组进行排序:double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 3.5 };java.util.Arrays.sort(numbers);
char[] chars = {'a', 'A', '4', 'F', 'D', 'P'};java.util.Arrays.sort(chars, 1,3);这里调用sort(numbers)对numbers的整个数组排序,调用sort(chars ,1,3)对从char[1]到chars [3-1]的部分数组排序.
这里我不明白的就是为什么上面写着3减1,不直接写2?还是有其他意思的?请大家帮忙解答.

第1个回答  2013-04-09
额,他只是为了让你明白sort(char,1,3)是从第1个开始,到第3个(但是不包括第3个)的字符进行排序。
第2个回答  2013-04-07
这里写3-1是告诉你2是怎么来的啊,java中大部分区间都是左闭右开的,就是包含左边的数字,不包含右边的数字,这里就是[1,3)--等价于-->[1,2]
第3个回答  2013-04-08
是为了突出后面两个参数的意义:第一个整数表示:从哪个下标开始(包括该元素)第一个整数表示:到哪个下标结束(注意:不包括该元素)这就是原因,为了表示不包括该下标的元素
第4个回答  2013-04-08
额,,, 数组 是从0开始的. 所以呢1,3 那么就是0 1 2 这三个元素
第5个回答  推荐于2017-11-25
JDK API 1.6的解释:
public static void sort(double[] a,int fromIndex,int toIndex)
对指定 double 型数组的指定范围按数字升序进行排序。排序的范围从索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,则排序范围为空。)
虽然 < 关系式对不同数字 -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 - 要排序的数组
fromIndex - 要排序的第一个元素的索引(包括)
toIndex - 要排序的最后一个元素的索引(不包括)
抛出:IllegalArgumentException - 如果 fromIndex > oIndex
ArrayIndexOutOfBoundsException - 如果 fromIndex < 0 或 toIndex > a.length本回答被网友采纳
相似回答