美文网首页
插入排序

插入排序

作者: AceKitty | 来源:发表于2016-12-28 10:13 被阅读7次

    概念

    插入排序(Straight Insertion Sort):有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,

    原理

    将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

    例子为从小到大的排序


    ggg.jpeg

    算法描述(C语言)

    void insert_sort(int *a, int len) {
        for (int i = 1; i < len; i++) {
            int temp = a[i]; //保存当前位置的值
            int j;
            for (j = i - 1; j >= 0 && temp < a[j]; j--) {
                a[j + 1] = a[j]; //后移一位
            }
            a[j + 1] = temp;//插入到合适的位置
        }
    }
    
    int main() {
        int a[] = {3, 2, 7, 1, 0, 3};
        int len = sizeof(a)/sizeof(int);
        insert_sort(a, len);
        for (int i = 0; i < len; i++) {
            printf("%d\n", a[i]);
        }
        return 0;
    }
    

    算法稳定性

    两个相等的元素排序结束后位置都不会发生交换,所以插入排序是稳定的。

    算法分析

    时间复杂度:O(n²)

    相关文章

      网友评论

          本文标题:插入排序

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