请在线的C程序高手帮我:我用cout做冒泡排序,我的程序怎么修改,在线等答案,希望可以附图,谢谢!

2024-12-27 03:18:00
推荐回答(3个)
回答1:

修改如下:
#include
using namespace std;//注意这类写错了
int main()
{
int n,i,j,a[100];
int tmp;
cin>>n;//输入一个数,要排序数的个数
for(i=0;i{
cin>>a[i];
}
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
for(i=0;i{
cout<}
return 0;
}

回答2:

为什么会出问题只要你想一想就知道了,假设n=5
5个数据从a[0]-a[4]

假设i=1;

那么在for(j=0;j
就会使j=4时继续执行
然后就会超出原定范围比较a[4]和a[5]

另外给个示例
void bbsort(int *arr,int n)
{
int temp,i,j,k;

for(i=n-1;i>0;i--)
{
k=0;
for(j=0;j {
if( *(arr+j) > *(arr+j+1) )
{
temp = *(arr+j);
*(arr+j) = *(arr+j+1);
*(arr+j+1) = temp;
k=1;
}
}
if(k==0)
break;
}
}

回答3:

#include
using namespace std;
int main()
{
int n,i,j,a[100];
int tmp;
cin>>n;//输入一个数,要排序数的个数
for(i=0;i{
cin>>a[i];
}
for(i=1;ifor(j=0;jif(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
for(i=0;i{
cout<}
return 0;
}