了解函数循环中发生的事情

时间:2019-04-26 00:09:34

标签: c++ arrays

我想知道为什么内部for循环会执行。我的理解是由于j = 1i = 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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在第一次迭代期间跳过内部循环。在i递增之后,j现在等于i,因此内部循环将执行1次。内循环退出,外循环将i增加1,内循环现在以i == 2进行两次迭代。 这将一直重复到i == size - 1i < 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++)