我试图弄清楚内部循环如何在下面的代码中工作,但我无法理解。我真正难以理解的部分是这个条件部分util.kt
//内部循环//
(d<n-c-1)
答案 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 - 1
与d < (n - c - 1)
表示此for
循环将执行,直到d
小于(n - c - 1)