• 插入排序


    插入排序

    将目标元素插入到前方有序序列中合适的位置,插入一次,有序序列长度加一,就是你打牌整理牌序的过程。

    伪代码

    INSERTION_SORT(A)
        for j = 2 to A.length
            key = A[j]
            i = j - 1
            while i > 0 and A[i] > key
                A[i+1] = A[i]
                i = i - 1
            A[i+1] = key
    

    python

    A = [5,2,4,6,1,3]
    print("排序前", A)
    j = 1
    while j < len(A):
        key = A[j]
        i = j - 1
        while i >= 0 and A[i] > key:
            A[i+1] = A[i]
            i = i - 1
        A[i+1] = key
        j = j + 1
    print("排序后", A)
    

    c++

    #include <iostream>
    using namespace std;
    int main()
    {
        int A[] = {5,2,4,6,1,3};
        cout << "排序前 ";
        for(int i = 0; i < 6; i++)
        {
            cout << A[i] << " ";
        }
        cout << endl;
        for(int j = 1; j < 6; j++)
        {
            int key = A[j];
            int i = j - 1;
            while(i >= 0 && A[i] > key)
            {
                A[i+1] = A[i];
                i = i - 1;
            }
            A[i+1] = key;
        }
        cout << "排序后 ";
        for(int i = 0; i < 6; i++)
        {
            cout << A[i] << " ";
        }
        return 0;
    }
    

    算法分析

    运行时间

    • 依赖于输入的顺序,最好顺序,最差逆序
    • 依赖于输入的规模
      • 将运行时间看作以输入规模为参数的函数
    • 时间上界,对用户的承诺
    • 时间复杂度$ heta(n^2)$
  • 相关阅读:
    JavaEE高级-JPA学习笔记
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
  • 原文地址:https://www.cnblogs.com/vito_wang/p/10801919.html
Copyright © 2020-2023  润新知