Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何正确地将选择排序算法重新设计为冒泡排序?_C++_Bubble Sort_Selection Sort - Fatal编程技术网

C++ 如何正确地将选择排序算法重新设计为冒泡排序?

C++ 如何正确地将选择排序算法重新设计为冒泡排序?,c++,bubble-sort,selection-sort,C++,Bubble Sort,Selection Sort,我正在尝试将选择排序转换为冒泡排序。我这样做成功了吗?如果没有,我需要做什么来纠正此问题 我相信我已经正确地转换了它 企图 目标是将选择排序转换为冒泡排序。如果有帮助的话,我有我在尝试转换之前的原始代码。冒泡排序只交换相邻元素,所以无论您在哪里测试非相邻元素,您都偏离了冒泡。气泡排序最简单的形式就是这种形式 for (int pass = 1; pass < v.size(); ++pass) { for (int index = 0; (index + 1) < v.siz

我正在尝试将选择排序转换为冒泡排序。我这样做成功了吗?如果没有,我需要做什么来纠正此问题

我相信我已经正确地转换了它

企图
目标是将选择排序转换为冒泡排序。如果有帮助的话,我有我在尝试转换之前的原始代码。

冒泡排序只交换相邻元素,所以无论您在哪里测试非相邻元素,您都偏离了冒泡。气泡排序最简单的形式就是这种形式

for (int pass = 1; pass < v.size(); ++pass) {
    for (int index = 0; (index + 1) < v.size(); ++index) {
        if (v[index + 1] < v[index]) {
            swap(v[index], v[index + 1]);
        }
    }
}
我们可以注意到,在第一次传递之后,最大值必须位于正确的位置,同样地,在第二次传递之后,第二个最大值位于它的位置,等等。这允许我们调整内部循环的边界

for (int pass = 1; pass < v.size(); ++pass) {
    for (int index = 0; (index + pass) < v.size(); ++index) {
        if (v[index + 1] < v[index]) {
            swap(v[index], v[index + 1]);
        }
    }
}

这就是选择排序。你说的转换是什么意思?不能将排序算法转换为其他排序算法。冒泡排序不是选择排序-它们是两种不同的排序方式。您需要从头开始编写冒泡排序,这是比选择排序更容易编码的最简单排序算法之一。@tkausl我需要做什么来更正此问题并使其成为冒泡排序?代码最初是使用选择排序编写的,但我需要将其重写为冒泡排序。
for (int pass = 1; pass < v.size(); ++pass) {
    for (int index = 0; (index + pass) < v.size(); ++index) {
        if (v[index + 1] < v[index]) {
            swap(v[index], v[index + 1]);
        }
    }
}