lz这个问题确实容易晕哦~~~
for(int i = 1; i<arr.length -1 ; ++i)
这个意思是:在数组长度为10的话,每遍历一次,下次遍历数组的长度都少1次,length表示数组的长度
for(int x = 0 ; x < arr.length ;x++)
这个的意思是: 每一次都跟数组的长度去遍历。长度不会减少
x定义的是角标位, x<length控制的是遍历数组的长度, x<length-1控制的是遍历数组的长度,数组长度每次-1
举个例子:
public static void threeMethod() {
int array[] = {5,7,2,-5,10,-7,8};
for(int i = 0 ; i < array.length ; i ++) {
for(int j = i +1 ; j < array.length ; j ++) {
if(array < array[j]) {
int temp = array;
array = array[j];
array[j] = temp;
}
}
}
for(int i = 0 ; i < array.length ; i ++) {
System.out.print(" "+array+" ");
}
}
}}
第一个for循环,即外层循环,控制的是循环次数,所以不管你是0到9还是1到10
效果是一样的,只要相差值相同即可
第二个就有些讲究了j是从i+1开始的
因为第一次第一个与第二个相比,正好是i和i+1相比,
第二轮就是i+1和i+1+1相比,这样就遍历了所有元素
当然,你也可以不管什么i+1,j+1,所有都写成0开始到结尾结束
只是这样效率低一点罢了
|