我一遍又一遍地检查代码中的任何问题,但无法弄清楚为什么我的冒泡排序程序没有给出正确的输出。你能帮我鉴定一下吗?
#include <iostream.h>
#include <conio.h>
using namespace std;
main()
{
int number[10];
int temp=0;
int i=0;
cout<<"Please enter any ten numbers to sort one by one: "<<"\n";
for (i=0;i<10;i++)
{
cin>>number[i];
}
i=0;
for (i=0;i<10;i++)
{
if(number[i]>number[i+1])
{
temp=number[i+1];
number[i+1]=number[i];
number[i]=temp;
}
}
i=0;
cout<<"The sorted numbers are given below:"<<"\n";
for (i=0;i<10;i++)
{
cout<<number[i]<<"\n";
}
getch();
}
编辑:我已经接受了你们所说的必须有一个外循环。但我又在想我写的东西。我认为具有气泡条件的唯一循环应该进行排序。这是我的想法:
for (i=0;i<10;i++)
if(number[i]>number[i+1])
{
temp=number[i+1];
number[i+1]=number[i];
number[i]=temp;
}
}
现在我解释一下我在想这个循环“应该”做什么。它将首先将 number[0] 与 number[1] 进行比较。如果满足条件,它将执行 IF 语句主体中的操作。然后 i 将增加 1(i++)。然后在下一次迭代中,比较的值将是 number[1] 和 number[2]。那为什么它没有发生并且循环仅在通过后退出?换句话说,可能是我想问 IF 语句不会在 for 循环中重复吗?在我看来确实如此。我非常感谢您的帮助和意见,我的问题可能很小,但这就是我的进步。谢谢。