【发布时间】:2021-07-01 00:23:56
【问题描述】:
我不明白内部 for 循环是如何在找到一个通过 if 语句中的测试表达式的值后停止的。我期待内部 for 循环继续迭代,不管当前迭代的值是否满足 if 语句中的测试表达式。
我预计会发生这种情况,因为在我看来,在内循环标头中,只要索引小于数组的大小,它就应该继续迭代,但是它不会继续并跳回外循环执行交换...
我不明白是什么阻止了内部 for 循环迭代每个元素中的每个值,无论它是否通过 if 语句中的测试表达式。有谁能解惑吗?
谢谢
void selectionSor(int array[], int size)
{
int minIndex, minValue;
for (int start = 0; start < (size - 1); start++)
{
minIndex = start;
minValue = array[start];
for (int index = start + 1; index < size; index++)
{
if (array[index] < minValue)
{
minValue = array[index];
minIndex = index;
}
}
swap(array[minIndex], array[start]);
}
【问题讨论】:
-
是什么让你认为内循环提前停止了?
-
我不明白是什么阻止了内部 for 循环迭代每个元素中的每个值,无论它是否通过 if 语句中的测试表达式。 -- 如果您使用调试器单步调试代码,您可以自行回答。
-
如果
index >= size,内部循环将停止。没有魔法发生。 -
这正是您的调试器的用途。您的调试器将允许您一步一步、一次一行地执行该程序,并检查所有变量的值并监控它们如何变化。您是否已经尝试过使用调试器,如果没有,为什么不呢?如果你这样做了,你看到了什么,你不清楚吗?
-
你走运了! Visual Studio 拥有最容易使用的调试器之一。 I'd start reading here
标签: c++ for-loop selection-sort