void BubbleSort(int a[], int array_size) {
int i, j, temp;
for (i = 0; i < (array_size - 1); ++i) {
for (j = 0; j < array_size - 1 - i; ++j) {
if (a[j] > a[j+1]) {
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
使用冒泡排序算法,我们为什么要从第一个元素而不是第0个元素开始。我们看到有一个(++ i)和(++ j)。 这是唯一但我似乎无法掌握的代码。
答案 0 :(得分:3)
for循环的行为与您的想法不同。最后一部分,此处++i
和++j
在循环完成后执行,而不是之前的。 i++
和j++
在这里完全相同。
for (
i = 0; //First part, executed before the first loop
i < (array_size - 1); //Second part, executed before each loop
++i //Last part, executed AFTER each loop
)
答案 1 :(得分:2)
您从第0个元素开始。 ++ i只有你的代码才能在同一行上使用,而不是在for循环中使用:
++我将增加i的值,然后返回递增的值。
i = 1; j = ++ i; 现在i = 2,j = 2
i ++将增加i的值,但返回我在增加之前保持的原始值。
i = 1; j = i ++; 现在i = 2但j = 1
答案 2 :(得分:0)
void BubbleSort(int a[], int array_size)
{
int i, j, temp;
for (i = 0; i < (array_size ); i++)
{
for (j = i+1; j < array_size ; j++ )
{
if (a[i] > a[j])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
}
我希望上面的代码比较容易理解。 如果您按照以下动画进行操作,可以更好地理解 bubble sort animation