[求助]还是用插入排序排列数组中的数,这个代码有点不明白(想通了)
#include<stdio.h>#define n 5
void main()
{
int num[n],i,k,a,j,b;
printf("\n请输入数列:");
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
printf("\n排序前的数列:\t");
for(i=0;i<n;i++)
{
printf("%d\t",num[i]);
}
for(a=1;a<n;a++)
{
for(i=0;i<a;i++)
{
k=num[a];
if(k<num[i])//第一个比k大的数
break;
}
for(j=a;j>i;j--)//从第一个比k大的数开始向后依次移动一位
{
num[j]=num[j-1];
}
num[i]=k;
}
printf("\n排序后的数列:\t");
for(i=0;i<n;i++)
{
printf("%d\t",num[i]);
}
printf("\n");
}
这个代码对的我就是有点不明白
在比较的时候那个if条件不成立的时候后面的循环一样运行,最后还是num[i]=k赋值,那么拿去准备插入的数就排在第一位嘛,但是运行结果又不是这样的啊~就这里不明白
[此贴子已经被作者于2006-7-28 15:17:28编辑过]