#include
int main()
{
int i,j;
int a[10];
int temp;
int pos;
printf("为数组元素赋值:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
temp=a[i];
pos=i;
for(j=i+1;j<10;j++)
{
if(a[j]
{
temp=a[j];
pos=j;
}
}
a[pos]=a[i];
a[i]=temp;
}
printf("排序结果如下:\n");
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
if(i==4)
printf("\n");
}
return 0;
}
为什么要pos=i;这行代码?
a[pos]=a[i]用a[j]=a[i]不可用吗
肯定不行,pos
变量是用于临时存储 i
的当前值的。你想啊,如果没有 pos
变量,if
判断里面直接用 i
会有一个问题,如果发生交换了,那么 i 的值可能会变为其他的值,循环次数就变得不固定了,因为你的 i
一会是 3,一会又是 6,交换的值可能会重复,甚至可能导致死循环