将已知数组排序,请问错在哪里了

来源:百度知道 编辑:UC知道 时间:2024/06/30 00:32:31
int main()
{
int i,a[5]={8,6,5,4,1},temp,n;
for(n=1;n<5;n++)
{
for(i=0;i<5;i++)
{
if(a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<5;i++)
cout<<a[i]<<endl;

return 0;
}

//修改如下,后面用注释说明了
#include <iostream>//用cout要包含此文件
using namespace std;//及这个命名空间
int main()
{
int i,a[5]={8,6,5,4,1},temp,n;
for(n=1;n<5;n++)
{
for(i=0;i<5-n;i++) //这里面,i要小于5-n每次的循环次数是在减少的.
{ //你上一轮排好的在下次不需要再排了!~
if(a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<5;i++)
cout<<a[i]<<endl;

return 0;
}

for(i=0;i<5;i++)
改为
for(i=0;i<4;i++)
越界了