#include<stdio.h>
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)
{
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]不可用吗
C语言选择排序怎么这么难
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
莪是男神 2022-09-27 20:59关注肯定不行,
pos变量是用于临时存储i的当前值的。你想啊,如果没有pos变量,if判断里面直接用i会有一个问题,如果发生交换了,那么 i 的值可能会变为其他的值,循环次数就变得不固定了,因为你的i一会是 3,一会又是 6,交换的值可能会重复,甚至可能导致死循环本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录