插入排序思想:每次将无序区第1条记录插入到有序区适当位置。初始取第1条记录为有序区,其它记录为无序区。随着排序进行,有序区不断扩大,无序区不断缩小。最终无序区为空,有序区包含了全部记录,排序结束。
以下代码案例,可copy调试
#include"stdio.h"
void insert_order(int *dat,int n)
{
int i,j;
for(i=2;i<=n;i++)
{
if(dat[i]>dat[i-1]) continue ;
dat[0]=dat[i];
j=i;
do{
dat[j]=dat[j-1];
j--;
}while(j>=2&&dat[j-1]>dat[0]);
dat[j]=dat[0];
}
}
void main()
{
int dat[9]={0,49,38,65,97,76,13,27,49};
int i;
printf("排序前:");
for(i=1;i<9;i++)
printf("%d ",dat[i]);
printf("\n");
insert_order(dat,8);
printf("排序后:");
for(i=1;i<9;i++)
printf("%d ",dat[i]);
printf("\n");
}