C++冒泡数问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 23:05:19
这题为什么会显示出来1 4 5 5 7?
#include<iostream.h>
void main()
{
int i,j,x,c;
int a[4]={1,8,5,4};
for( c=0;c<4;c++)
cout<<a[c]<<" ";
cout<<endl;
for(j=0;j<3;j++)
for(i=0;i<4-j;i++)
if(a[i]>a[i+1])
{
x=a[i];a[i]=a[i+1];a[i+1]=x;
}

for( c=0;c<4;c++)
cout<<a[c]<<endl;
}
是 1455

for(j=0;j<3;j++)
{
for(i=0;i<4-j-1;i++)
if(a[i]>a[i+1])
{
x=a[i];a[i]=a[i+1];a[i+1]=x;
}
}
// 边界问题

你看错答案了吧

for(j=0;j<3;j++)
for(i=0;i<4-j;i++) //当i=3的时候出现数组越界问题
if(a[i]>a[i+1])
{
x=a[i];a[i]=a[i+1];a[i+1]=x;
}
改为入下即可:
for(j=0;j<3;j++)
for(i=0;i<3-j;i++)
if(a[i]>a[i+1])
{
x=a[i];a[i]=a[i+1];a[i+1]=x;
}