Python插入排序的实现

时间复杂度:

最优时间复杂度:O(n) (升序排列,序列已经处于升序状态)
最坏时间复杂度:O(n^2)
稳定性:稳定

思路:

将每一个元素与前面已经排序的元素一一比较,当元素比某一个已经排序的元素大时就入在其后面

换个说法就是:从第二个元素开始和第一个元素相比排序,第三个元素和前两个已经排序的元素再一一对比进入插入放在后面

代码实现

def insert_sort(ary):
    """
    插入排序:
    将每一个元素与前面已经排序的元素一一比较,当元素比某一个已经排序的元素大时就放在其后面
    """
    n = len(ary)
    for i in range(1, n):
        key = i - 1
        mark = ary[i]    # 注: 必须将ary[i]赋值为mark,不能直接用ary[i],目的是将这个数保存起来
        while key >= 0 and ary[key] > mark:
            ary[key+1] = ary[key]  # # 前面的数大于后面的数时就将后面的数替换为前面的数
            key -= 1  # 减1继续循环往前与之前保存的mark的值对比
        ary[key+1] = mark  # 当key不满足>=0时说明在循环里已经将所有的值都比较了一遍并替换了,这时将保存的mark值替换到第一个位置
    return ary


res = insert_sort(array)  # 插入排序
print(res)

输出结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

猜你喜欢

转载自blog.csdn.net/qq_37140721/article/details/130317371