#include<stdio.h>
int main()
{
int a[12];
int i,j;
int temp;
int pos;
printf("请输入数组:\n");
for(i=0;i<12;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=1;i<12;i++)
{
temp=a[i];
pos=i-1;
while((pos>=0)&&(temp<a[pos]))
{
a[pos+1]=a[pos];
pos--;
}
a[pos+1]=temp;
}
for(i=0;i<12;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
这句while((pos>=0)&&(temp<a[pos]))里的temp为何不能直接写卫a[i]
c语言插入排序法
答案:2 悬赏:50 手机版
解决时间 2021-12-29 15:24
- 提问者网友:川水往事
- 2021-12-29 03:37
最佳答案
- 五星知识达人网友:山河有幸埋战骨
- 2021-12-29 04:55
你拿几个数模拟一下就看到了。whille里的循环是负责每趟将最小的数排到它该在的位置,即第i趟循环是保证从0到i的元素单调增排列。temp是用来记录当前i中的元素,有可能while执行一次a[i]处就有了新元素,值就改变了,然而temp还要继续和前面的比较看看是不是仍要往前插入,这个循环一直是while在做
全部回答
- 1楼网友:雪起风沙痕
- 2021-12-29 05:28
因为for循环里面的i是从1开始的,而数组下标从0开始
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯