直接插入排序

最差时间复杂度  O(n^2);

最优时间复杂度  O(n);

平均时间复杂度:O(n^2)

稳定性:稳定

 

Insertion Sort: 通过构建有序序列,对未排序的数据,在已排序序列中从后往前扫描,找到合适的位置插入

插入排序算法的一般步骤:

1、从第一个元素开始,该元素被认为已被排序

2、取出下一个元素,在已排序的序列中从后往前扫描

3、如果该元素大于新元素,将该元素移到下一个位置

4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

5、将新元素插入后,重复2~5

实现代码

void InstertionSort(int a[], int length)

{

     for (int j=1;j<length;j++)

     {

         int key = a[j];

     int i=j-1;

    while(i>0&a[i]>key)

      {   

         a[i+1] = a[i];

        i--;

      }

    a[i+1]= key;

    

    

      }

}

 

posted @ 2016-05-16 21:21  Aaron_L  阅读(175)  评论(0编辑  收藏  举报