C++简介:排序代码
Intro to C++: Sorting code
我正在为今天安排的期末考试复习。我的问题是,do-white(swap)语句在这里做什么?swap是否默认设置为"true"?
我对这段代码的理解是,它在每次排序过程中至少迭代一次。内部for循环携带关键代码,并在过程中进行所有交换。例如,将array[count]复制到temp中,将array[count+1]复制到array[count]中,并将array[cunt]复制到数组[count+1]中。如果交换了这两个元素,则布尔交换将设置为true。外部循环不断迭代,直到发现交换标志为false。
void sortArray(int array[], int size)
{
int size;
bool swap;
do
{
swap = false;
for(int count = 0; count < (size -1); count++)
{
if(array[count] > array[count+1])
{
temp = array[count];
array[count] = array[count+1];
array[count+1] = temp;
swap = true;
}
}
}while(swap);
}
Swap
用于检查算法是否仍在排序。如果swap
为false,则表示数组已经排序,可以完成算法。
默认情况下(在do-while
循环的每次迭代开始时),swap
设置为false,并且只有在进行交换时才会更改为true
(这意味着数组元素的顺序不正确)。
Swap
变量用于确定算法的结束。若数组已排序,则不会发生交换,并且swap
变量将为false,因此排序结束。
swap
变量的默认值是未定义的,但这并不重要,因为在从开始处理数组之前,您在每次迭代中将其赋值为false
而do用于执行for循环,直到数组中没有元素被交换为止。如果在for循环期间没有发生交换,则会对所有元素进行排序。但是,如果在执行内部循环期间交换了两个元素,则会再次扫描数组以检查结果数组是否排序。
相关文章:
- 我不明白这段代码是如何对这个pythonlist()进行排序的,也不明白如何用C++中的向量来重现它
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- 使用 std::vector C++快速排序,EXC_BAD_ACCESS代码 2
- 在实现合并排序代码时无法计算所有反转
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 我怎么不能按课程代码的降序对数字进行排序
- C++17.处理使用 auto 相关的模板参数.代码排序困难
- 排序程序的意外错误代码
- 为什么我的代码没有对数组中第二个索引上的数据进行排序?
- 为什么此代码上的排序算法不调用类的交换版本?
- 我的选择排序代码是否存在导致它跳过数组中的元素的问题?
- 此气泡排序代码中的错误是什么?
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- 合并排序代码中的分段错误
- 我的C++合并排序代码有什么问题?
- 添加气泡排序代码以排列列表
- C 代码:关于排序的搜索测试示例
- 我写了一个快速的排序代码,逻辑似乎很正确,但是控制台上没有输出
- shell将伪代码排序为c++代码