请问我的冒泡为什么不正确??

来源:百度知道 编辑:UC知道 时间:2024/06/19 03:12:47
#include <stdio.h>
void main()
{
int a[4]={3,5,2,9};
int i=0;
int j=0;
int temp;
for(;i<3;i++)
for (;j<3-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<4;i++)
printf("%d\n",a[i]);
getchar();
}
我觉得挺对的啊。。。为什么出来结果是 3 2 5 9 ???为什么???

# include <stdio.h>
void main()
{
int a[4]={3,5,2,9};
int i=0;
int j=0;
int temp;
system("cls");
for(;i<3;i++)
for (j=0;j<3-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<4;i++)
printf("%d\n",a[i]);
getch();
}
运行时,j的值变了,所以要说明j=0.

循环条件改一下
for(;i<4;i++)
for (j=0;j<3-i;j++)