直接插入排序法是指将一个记录插入到已排好序的有序序列中,使整个序列在新插入了一个记录之后仍然有序,插入位置的确定是通过将待插入的记录与有序区中的各记录自右向左依次比较其关键字值的大小确定的。
#include <stdio.h>
void isort(int a[],int n);
int main()
{
int i,a[11];
for(i=1;i<11;i++){
scanf("%d",&a[i]);
}
printf("Input the original order:\n");
for(i=1;i<11;i++){
printf("%d ",a[i]);
}
isort(a,10);
printf("\nthe sorted numbers:\n");
for(i=1;i<11;i++){
printf("%d ",a[i]);
}
}
void isort(int s[],int n)
{
int i,j;
for(i=2;i<=n;i++){
s[0]=s[i]; /*给监视哨赋值*/
j=i-1; /*确定要进行比较的元素的最右边位置*/
while(s[0]<s[j]){
s[j+1]=s[j]; /*数据右移*/
j--; /*移向左边未进行比较的元素*/
}
s[j+1]=s[0]; /*插入*/
}
}