思路:首先,我们拿到一个数组,假设在有序基础上对后面的无序进行直接插入排序,下图是插入思路:
以上是数字4插入的过程,但是我们需要看边界情况,当前面数字都大于插入关键字的时候,插入操作进行到下标为0的时候结束插入。
以下是实现的C语言代码:
#include <stdio.h>
#include <stdlib.h>
//对单次插入动作进行调整,直到找到合适的位置
void insert(int arr[],int n){
int key=arr[n];
int i=n;
while(key<arr[i-1]){
arr[i]=arr[i-1];
i--;
if(i==0){
break;
}
}
arr[i]=key;
}
//假设第一个有序,从第二个数字开始进行插入调整
void insertSort(int arr[],int n){
int i;
for(i=1;i<n;i++){
insert(arr,i);
}
}
int main()
{
int arr[]={4,5,6,2,8,7,1,0,9};
int i;
insertSort(arr,9);
for(i=0;i<9;i++){
printf("%d\n",arr[i]);
}
return 0;
}