1、介绍
插入排序是把一个记录插入到已排序的有序序列中,使整个序列在插入该记录后仍然有序。插入排序中较简单的一种方法是直接插入排序,其插入位置的确定方法是将待插入的记录与有序区中的各记录自右向左依次比较其关键字值的大小。本实例要求使用直接插入排序法将数字由小到大进行排序。
2、代码
利用顺序查找法查找插入位置
#include <stdio.h>
void insort(int s[], int n)
{
int i,j;
for(i=2;i<=n;i++)//从第三个位置开始,第0位为哨兵位,第1位为对比的位
{
s[0] = s[i];//将第i位的值赋值到哨兵位置
j = i-1;//从i左边开始对比
while(s[0]<s[j])
{
s[j+1] = s[j];//右移
j--;
}
s[j+1] = s[0];//s[0]>s[j]的情况,直接放在j后面
}
}
int main()
{
int i,a[11];
printf("输入10个数:\n");
for(i=1;i<=10;i++)
scanf("%d", &a[i]);
printf("原始顺序:\n");
for(i=1;i<11;i++)
printf("%5d", a[i]);
insort(a,10);
printf("\n插入数据排序后顺序:\n");
for(i=1;i<11;i++)
printf("%5d", a[i]);
}