我想知道为什么内部for循环会执行。我的理解是由于j = 1
和i = 0, j <= i;
不会产生任何结果,因为j
已经大于i
。因此,将跳过内部循环,从而产生与初始数组相同的结果。
void sortArray(int myArray[], int size)
{
int num1 = 0;
int num2 = 0;
int temp = 0;
for (int i = 0; i < size; i++)
{
int first = 0;
for (int j = 1; j <= i; j++)
{
if (myArray[j] > myArray[first])
{
first = j;
}
temp = myArray[first];
myArray[first] = myArray[i];
myArray[i] = temp;
}
}
}
答案 0 :(得分:1)
在第一次迭代期间跳过内部循环。在i
递增之后,j
现在等于i
,因此内部循环将执行1次。内循环退出,外循环将i
增加1
,内循环现在以i == 2
进行两次迭代。
这将一直重复到i == size - 1
或i < size
(条件相同,措辞不同)。
答案 1 :(得分:1)
内部循环应跳过外部循环1次迭代,然后运行1次,因为j<=i
返回true
。 (第一次迭代i=0
,第二次迭代i=1
)
这等效于:
for (int j = 1; j <= 0; j++)
此后,第二个循环将运行1次,相当于
for (int j = 1; j <= 1; j++)
以此类推。
for (int j = 1; j <= 2; j++)