当我运行代码时,数组p没有排序。我想不出来
为什么会这样?
import java.util.Arrays;
public class Main {
public static void main (String[] args){
//creating array p
int[] p= new int[] {2,7,8,3,9,1,4,5,6,0 };
//sort p[5] to p[9]
Arrays.sort(p, 5, 9);
for(int l=0;l<p.length;l++)
{
System.out.print(p[l]);
}
}
}
输出为:2783914560
答案 0 :(得分:5)
您具体要求对上限中的p [5]到p [9] 独占的部分进行排序...所以4个元素已经按顺序排列(1 ,4,5,6)。
如果要排序为p [9] 包含,则应调用
Arrays.sort(p, 5, 10);
toIndex
- 要排序的最后一个元素的索引
当然,它仍然不会对整个数组进行排序 - 只是它的最后一部分,所以你最终会得到{2,7,8,3, 9,0,1,4,5,6}。要对整个数组进行排序,只需调用Arrays.sort(p)
。
请注意,使用包含下限和独占上限指定范围的模式在计算中是非常常见,您应该习惯它。另一个常见示例是String.substring
:
String text = "0123456789";
String substring = text.substring(0, 5); // 01234
答案 1 :(得分:0)
因为您没有对整个阵列进行排序。在这一行:
Arrays.sort(p, 5, 9);
您只是从第5到第9位对数组进行排序。使用可以改为使用:
Arrays.sort(p, 0, p.length);
通过这种方式,您确定要将整个数组从第一个位置(索引零)排序到最后一个位置(最后一个参数表示最后一个独占索引)。
但它更容易使用:
Arrays.sort(p);
如上所述自动对整个数组进行排序。
答案 2 :(得分:0)
来自Arrays.sort()
要排序的范围从索引fromIndex(包括)扩展到 index toIndex,exclusive。
我认为您希望在排序中包含index 9
。在这种情况下,您需要传递p.length (that is 10) instead of 9
。