插入排序描述(来自百度百科):

      ⒈ 从第一个元素开始,该元素可以认为已经被排序

 
  ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
 
  ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
 
  ⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
 
  ⒌ 将新元素插入到下一位置中
 
  ⒍ 重复步骤2

 

  1. #include <stdio.h> 
  2.  
  3. void insertion_sort(int arr[],int length){ 
  4.         int s; 
  5.         int i,j,temp; 
  6.         for(i=1;i<length;i++){ 
  7.                 for(j=i-1;j>=0;j--){ 
  8.                         if(arr[j] > arr[j+1]){ 
  9.                                 temp = arr[j]; 
  10.                                 arr[j] = arr[j+1]; 
  11.                                 arr[j+1] = temp; 
  12.                         } 
  13.                 } 
  14.         } 
  15.  
  16. void printArr(int arr[],int length){ 
  17.         int i; 
  18.         for(i=0;i<length;i++){ 
  19.                 printf("%d,",arr[i]); 
  20.         } 
  21.         printf("\n"); 
  22.  
  23. int main(void){ 
  24.         int length; 
  25.         printf("please input the sort array length:"); 
  26.         scanf("%d",&length); 
  27.         printf("you length number is:%d\n",length); 
  28.         int arr[length]; 
  29.         printf("please input %d numbers:\n",length); 
  30.         int i; 
  31.         for(i = 0;i<length;i++){ 
  32.                 scanf("%d",&arr[i]); 
  33.         } 
  34.         printf("you input numbers:"); 
  35.         printArr(arr,length); 
  36.         insertion_sort(arr,length); 
  37.         printf("after sorting:"); 
  38.         printArr(arr,length); 

PS:在将数组作为函数参数传递的时候,开始当做了php一样处理,结果调试了好久都不正确,百度之,原来c语言将数组作为参数的时候都是传递数组的首地址的指针。