结果都不会变?这两个有什么区别吗?为什么要这样写呢?

img


为什么在这里for(int i=0;i<score.length-1;i++)改成for(int i=0;i<score.length;i++)结果都不会变?这两个有什么区别吗?为什么要这样写呢?

你把数组的865换个位置就会出问题了。
没出问题仅仅只是因为你数组的最后一位8刚好是最小的,这时就算不管最后一位也没问题。

把你最后的8换成25就知道区别了。如果score.length-1改为score.length 你的下一个循环j 的值 就会大于score.length会抛异常数组越界

减一:

img

未减一:

img

你把8换成100试试

我知道,
你这是碰巧,瞎猫碰上死耗子
没减1的时候是{43,24,44,100,8}这几个数字再排序
减1的时候是{43,24,44,100}这几个数字再排序,but 恰好8没有拿去排序,却还是再最后一个位置
也就是说你是凑巧的,不信你再往里面加一个数字去排就有所发现