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]);
}
}
}