c语言插入排序法

#include<stdio.h>intmain(){inta[12];inti,j;inttemp;intpos;printf("请输入数组:\n");for(i=0;... #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]
展开
 我来答
水里风
2018-01-17 · TA获得超过1528个赞
知道小有建树答主
回答量:1294
采纳率:80%
帮助的人:523万
展开全部
你拿几个数模拟一下就看到了。whille里的循环是负责每趟将最小的数排到它该在的位置,即第i趟循环是保证从0到i的元素单调增排列。temp是用来记录当前i中的元素,有可能while执行一次a[i]处就有了新元素,值就改变了,然而temp还要继续和前面的比较看看是不是仍要往前插入,这个循环一直是while在做
飘遥舞者
2018-01-17 · TA获得超过370个赞
知道小有建树答主
回答量:997
采纳率:55%
帮助的人:127万
展开全部
因为for循环里面的i是从1开始的,而数组下标从0开始
追问
while不是跟在for的语句后面么,for给i赋值为1了那么while里的a[i]难道不也是从1开始吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式