【发布时间】:2022-06-10 22:41:24
【问题描述】:
我编写了这个冒泡排序代码,但它似乎不起作用,谁能解释一下原因?
#include <iostream>
using namespace std;
int main(){
int numbers[5]={2,7,9,3,4};
for(int i=0;i<5;i++){
for(int j=0;j<i;j++){
if(numbers[j]>numbers[j+1]){
int temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
for(int i=0;i<5;i++){
cout<<numbers[i]<<endl;
}
}
【问题讨论】:
-
"Doesn't work" 在诊断您的实际问题时没有任何用处。请具体说明!!
-
@mch 我知道,评论已删除。我想我们等待 OP 说出“似乎不起作用”是什么意思
-
@john 当 i==4 时,因为 j 的最大值是 i-1,所以 j+1 的索引为 4 。所以它有效吗?
-
您的内部循环迭代方向错误。它应该从
(5-1)迭代到i。使用您当前的代码,数组末尾的4仅检查一次,因此只能移动一次。 -
内循环必须至少运行到
j<5-i