插入排序是直接把一个数据插入到已有的序列中
插入位置的确定:是将待插入的数据与已有序列进行比较。
#include <stdio.h>
void insort(int s[],int n)
{
int i,j;
for(i=2;i<=n;i++) //从下标2开始比较
{
s[0]=s[i]; //设置监视岗
j=i-1; //确定比较的右边元素
while(s[0]<s[j])
{
s[j+1]=s[j]; //数据右移
j--; //向左移动比较
}
s[j+1]=s[0]; //移向左边一个未比较的数
}
}
main()
{
int a[11],i;
printf("请输入10个数:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
printf("原始排序:");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
insort(a,10);
printf("排序后:");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}