新手学习数据结构与算法---直接插入排序

 直接插入排序时间复杂度:O(n^2)

  
  
  
  
  1. //插入排序算法,以数组为实例,主要先理解算法   
  2. #include <stdio.h>  
  3.  
  4. #define MAX 11  
  5.  
  6. void InsertSort(int arr[])  
  7. {  
  8.     int i,j;  
  9.     for(i = 2; i < MAX; i++)      //将arr[0]的位置空出来 ,专门用来存放用来比较的数   
  10.     {                   
  11.         arr[0] = arr[i];          //将arr[i] 的值赋给 arr[0] ;以arr[i] 为中心将数组分成左右两个序列,左边为有序   
  12.                      j = i - 1;                //arr[j]变成arr[i] 左边序列的最后一个数   
  13.         while(arr[0] <= arr[j])    //将arr[0] 与arr[j]进行比较   
  14.         {  
  15.             arr[j+1] = arr[j];     //若是将arr[j]赋给原来的arr[i]   
  16.             j--;                   //再与前面一个比较   
  17.         }  
  18.         arr[j+1] = arr[0];          //当arr[j]比arr[0] 小,将arr[0 ]赋给arr[j+1],这个空位   
  19.     }  
  20. }  
  21.  
  22. int main()  
  23. {  
  24.     int i;  
  25.     int arr[MAX] = {0, 12, 45, 23, 45, 56, 74, 78, 89, 45, 56};  
  26.     InsertSort(arr);  
  27.       
  28.     for(i = 1; i < MAX; i++)    //从arr[1] 开始输出,原来的arr[0]为测试的   
  29.         printf("%d ", arr[i]);  
  30.     printf("\n");  
  31.     return 0;   


 

希望能记住自己的一步一步前进历程,感谢多多指点。

你可能感兴趣的:(数据结构,c,算法,职场,休闲)