这个表达式的作用是什么(d = 0; d <nc-1; d ++){bubble =“”sort} =“”

时间:2016-02-23 10:22:05

标签: c

=“”

我试图弄清楚内部循环如何在下面的代码中工作,但我无法理解。我真正难以理解的部分是这个条件部分util.kt //内部循环//

(d<n-c-1)

4 个答案:

答案 0 :(得分:2)

内循环是bubblesort的比较循环。它确保数组中的最后一个位置是最高位置。 c的下一个循环,它会检查除最后​​一个元素之外的所有元素(那个元素已经被排序)。

示例:

0 1 2 3 4 (index of array)
5 3 4 2 1 (start, c=0, d=0)
3 5 4 2 1 (start, c=0, d=1)
3 4 5 2 1 (start, c=0, d=2)
3 4 2 5 1 (start, c=0, d=3)
3 4 2 1 5 (start, c=0, d=4)

下一个循环,c将为1,d将仅增加到3.这将在最高索引(4)上保留最高值(5)。

答案 1 :(得分:1)

好吧,外环循环c从0到n-1;

  • 当c为0时,内部循环d从0到n-1

  • 当c为1时,内循环d从0到n-2

  • 当c为2时,内循环d从0到n-3

图形:

 *********
 ******** 
 *******
 ******
 *****
 ****
 ***
 **
 *  

答案 2 :(得分:1)

这似乎是Bubble Sort算法。第一个循环for (c = 0; c < (n - 1); c++)是完成排序所需的主迭代次数,第二个循环for (d = 0; d < n - c - 1; d++)是设置需要多少比较和交换的限制。

对于第一次迭代,它应该比较并交换整个数组,第二次迭代是"end of array - 1",依此类推。

您可以看到一个不错的可视化here

答案 3 :(得分:1)

据我所知,你的问题是关于这个for循环的条件部分:

for (d = 0; d < n - c - 1; d++) {}

条件是:d < n - c - 1d < (n - c - 1)

相同

表示此for循环将执行,直到d小于(n - c - 1)