看一下:
int[] v = new int[10];
for (int i = 0; i < v.length; i++) {
for (int j = i + 1; j < v.length; j++) {
if (v[i] > v[j]) {
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
这起作用。,有人可以解释如何吗?
即使我从i + 1
启动j
,此数组如何不脱离界限?这是如何工作的?
您已经将初始化与条件混淆了。loop()的语法为 -
for(initialization; condition; updation)
{
statement(s)
}
因此,即使您从1开始j(j = i 1和i = 0的初始值),j也只会更新,直到它等于数组的长度,即10。= 10(当i = 9时),控件将从j for loop()以及何时将其转移到i for loop()时,我将更新为10for loop()也。
我认为您需要返回基础知识进行循环
a循环可以定义为 for(before starting;continue when true;do at end of pass))
因此,一旦J等于v.length,它将停止。如果您从I。
您的for循环是由保持跟踪,条件和迭代的变量组成的。在您的代码中,for循环的条件指出,保持跟踪的变量不能超过v的长度。如果符合IF条件,则作为交换索引。外圈就在那里,以确保检查V的每个索引并在正确的位置。