【发布时间】:2016-09-25 06:47:11
【问题描述】:
这是我对冒泡排序的实现,为什么输出不变?输出与输入向量相同,而不是排序后的输出
#include<iostream>
#include<vector>
#include<algorithm>
void bubble_sort(std::vector<int> &v){
for( int i = 0; i < (v.size() - 1); i++){
for( int j = 0; j < (v.size() - 1 - i) ; j++){
if(v[i] < v[i+1]){
std::swap(v[i], v[i+1]);
}
}
}
}
int main(){
std::vector<int> v = {1,9,8,7,6,5,3,2};
bubble_sort(v);
for(auto &e : v){
std::cout<<e<<" ";
}
return 0;
}
【问题讨论】:
-
错误的括号:if(v[i])
-
首先,您显示的代码不会构建。其次,学习如何使用调试器。使用调试器,您可以逐行遍历代码并查看发生了什么,并能够监视变量及其值。
-
@JoachimPileborg 代码构建完美。我同意使用错误的参数
i而不是j是我的错误。感谢我从现在开始使用调试器 -
修复编译错误后,它会对特定输入进行排序,但不会对
{1,2,3}进行排序。 -
@molbdnilo 你能解释一下吗
标签: c++ sorting bubble-sort