思想:将要插入的第i个作为关键字target,然后与i之前的比较,如果之前这个有序序列中从后往前比较,有比target大的,就后移,直到找到第一个不大于target的位置插入即可,循环直到结束!
#include<stdio.h>
void InserSort(int arr[],int n)
{
int i,j;
int target;
for(i=1;i<n;i++)
{
target=arr[i];//关键字赋值
j=i;
while(j>0&&target<arr[j-1])
{
arr[j]=arr[j-1];//大于target的后移
j--;
}
arr[j]=target;直到找到不大于target的位置插入
}
}
int main()
{
int arr[]={2,5,1,6,8,4,9,3,7};
int count = sizeof(arr)/sizeof(int);
int k;
InserSort(arr,count);
for(k=0;k<count;k++)
{
printf("%d",arr[k] );
}
return 0;
}
运行结果: