下面的冒泡排序实现有什么问题?
whats wrong with the following implementation of bubble sort
这是我的冒泡排序的实现,为什么输出不改变?输出与输入向量相同,而不是排序后的输出
#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;
}
在测试中,您使用的是i
,而不是最有可能使用j
(因为i
在该循环中是恒定的)。
按递增顺序对vector进行排序的编译和正常工作的代码。
#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[j] > v[j+1] ){
std::swap(v[j], v[j+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;
}
您试图仅使用索引进行交换。
#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[j] > v[j+1]){
std::swap(v[j], v[j+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;
}
相关文章:
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 格式说明符C++有什么问题
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 我的堆栈和库存清单程序的结构有什么问题?
- 此工厂功能有什么问题?
- 以下 C++ 代码有什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了