我是 C++ 和算法的新手,谁能帮我解释一下代码中间 (last--;
) 的用法?我得到的解释是数组每次通过都会增加一个值,所以我们需要在那里放一个 last--
。我试过去掉它,它不影响任何东西,所以有必要放一个last--;
吗?
void bubbleSort(int array[], int size)
{
bool swap;
int temp;
int last = size - 1;
do
{
swap = false;
for (int count = 0; count < last; count++)
{
if (array[count] > array[count + 1])
{
temp = array[count];
array[count] = array[count + 1];
array[count + 1] = temp;
swap = true;
}
}
last--;
} while (swap != false);
}
最佳答案
I have tried to remove it, it doesn't affect anything,
嗯,你测试过性能吗?
尝试一个巨大的数组并测量在有和没有那条线的情况下进行排序所花费的时间。
该行确保内部循环不会访问已经排序的数字。
如果删除该行,内层循环每次都会迭代size
次。在最坏的情况下,将给出 size x size
迭代。
有了这行,内层循环会先迭代size
次,然后是size-1
,然后是size-2
……在将给出 size x (size-1)/2
迭代的最坏情况,即近似值。迭代次数减半,从而提高性能。
关于c++ - last-- 有什么用?这里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58110445/