c 数组排序
# include<stdio.h>void main()
{
int i,j,p,q,s,a[3]={3,1,2};
for(i=0;i<3;i++)
{
p=i;
q=a[i];
for(j=i+1;j<3;j++)
if(q>a[j])
{
p=j;
q=a[j];
}
if(i!=p)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%-2d",a[i]);
}
}
当i=0时
q=3
j=1 q=1 if(q>a[j]) 成立 这里的成不成立应该是一样的吧!因为当j=2时,把原先的值给覆盖
j=2 q=2 if(q>a[j]) 成立
下面的换值
只换 a[i]=a[0]=3
a[p]=a[2]=2
结果 a[0]=2 a[1]=1 a[2]=3
当i=1时
q=1;
j=2
if(q>a[j]) 不成立
即结果 a[0]=2 a[1]=1 a[2]=3
在编辑器里的结果是 1 2 3
我的理解错在那里??? 新手大家见笑了!!