插入排序是把一个记录插入到已排序的有序序列中,使整个序列在插入该记录后仍然有序。插入排序中较简单的一种方法是直接插入排序,其插入位置的确定方法是将待插入的记录与有序区中的各记录自右向左依次比较其关键字值的大小。本程序使用直接插入排序法将数字由小到大进行排序。运行结果如图所示。
1.引用的头函数
#include<stdio.h>
2.自定义的insort( )函数,此函数实现数据的插入
void insort(int s[],int n) //自定义函数insort
{
int i,j;
for(i=2;i<=n;i++) //数组下标从2开始,s[0]作为监视哨,下标从s[1]开始比较没有意义
{
s[0] = s[i];
j = i - 1; //确定要比较的数的最右边的位置
while(s[0]<s[j])
{
s[j+1] = s[j];
j--; //移向左边一个未比较的数
}
s[j+1] = s[0]; //插入数据
}
}
3.main( )函数作为程序的入口函数,代码如下:
void main()
{
int a[11],i;
printf("请输入十个数据: \n");
for(i=1;i<11;i++)
{
scanf("%d",&a[i]);
}
printf("\n您输入的数据顺序为: \n");
for(i=1;i<11;i++)
{
printf("%d ",a[i]);
}
insort(a,10);
printf("\n排序后的顺序为: \n");
for(i=1;i<11;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
4:要点: