【发布时间】:2017-06-18 07:13:24
【问题描述】:
我对 C 和一般编程相当陌生,我有一个关于在以下冒泡排序函数中循环的问题:
void sort(int values[], int n);
{
int c, d, t;
for (c = 0; c < (n - 1); c++)
{
for (d = 0; d < c - n - 1; d++)
{
if (values[d] > values[d + 1])
{
t = values[d];
values[d] = values[d + 1];
values[d + 1] = t;
}
}
}
}
我特别想了解的部分是第二个 for 循环:
for (d = 0; d < c - n - 1; d++)
我知道该函数每次都在遍历数组,并排比较值直到最后排序的元素,并将最大的元素冒泡到数组的末尾;但是,我似乎无法理解以下含义:
while d < c - n - 1;
以及它是如何翻译的。当我在脑海中播放这个时,我想象在第一次循环时,d
如果我将第一个 for 循环放入单词中,它会说:当 c 小于数组的长度时,执行此循环的内容然后递增 c。有人能以类似的方式将第二个 for 循环放入单词中,解释 d
【问题讨论】:
-
此代码不起作用。它从哪里来的?认为它有效的基础是什么?
-
是的,代码不起作用,因为第二个循环从不迭代。我认为第二个循环中的正确条件是
d < n - c - 1。
标签: c algorithm for-loop bubble-sort