【发布时间】:2019-09-26 06:01:20
【问题描述】:
我是 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);
}
【问题讨论】:
-
最后的分号(我想在
while之后)是完全必要的,你不能省略它。你指的是哪个分号? -
我猜这是一种优化。您知道数组的末尾已排序,因此每次通过后您不必搜索那么远。但这只是一个猜测。它“不会影响任何事情”,因为该部分无论如何都已经排序了。
-
它用于每次比上一次少一次重复内部循环,因此您不考虑最后移动的元素。无论如何,正如你所尝试的,它并不是绝对必要的,它只是为了“效率”(在非常大的数组中可能会有一些好处)。
标签: c++ algorithm iostream bubble-sort