大致意思就是挨着挨着取一个元素,插入到已经部分排序好的序列中,如果小于序列中的元素,就将整个序列往后移,直到大于某个值或者数组首位就放过去这个元素。
代码实现如下:
1 #include <stdio.h> 2 int a[5]={432,43,4,2,10}; 3 void InsertSort(int a[],int n) 4 { 5 int i,j,tmp; 6 for(i=1;i<n;i++){ 7 if(a[i]<a[i-1]){ 8 tmp=a[i]; 9 for(j=i;tmp<a[j-1];--j) a[j]=a[j-1]; 10 a[j]=tmp; 11 } 12 } 13 } 14 int main() 15 { 16 InsertSort(a,5); 17 for(int i=0;i<5;i++) printf("%d ",a[i]); 18 return 0; 19 }
测试结果如下: