美文网首页
2.插入排序

2.插入排序

作者: MinkChannel | 来源:发表于2016-07-03 21:37 被阅读21次

    1. 概念

    将当前元素插入到已经有序的数组中适当的位置。

    2. 实现流程

    1. 从第一个元素开始,该元素可以认为已经被排序
    2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
    3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
    4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
    5. 将新元素插入到该位置后
    6. 重复步骤2~5

    3.算法图解

    插入排序 插入排序

    4.代码实现

    void insertion_sort(int arr[],int len) {
    
        int i,j;
        int temp;
    
        for (i = 0 ; i < len ; i ++) {
            temp = arr[i];
            for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
                arr[j+1] = arr[j];
            }
            arr[j+1] = temp;
        }
    
    }
    

    5.时间复杂度

    最差时间复杂度 O( n^2 )
    最优时间复杂度 O( n )
    平均时间复杂度 O( n^2 )

    最差空间复杂度 O( n ),需要辅助空间O(1)

    如果原始序列是I的,插入排序的效果是非常好的。

    相关文章

      网友评论

          本文标题:2.插入排序

          本文链接:https://www.haomeiwen.com/subject/gwdcjttx.html