Python 算法教程(3):插入排序详解

前言

插入排序类似于整理扑克牌,每次将新牌插入到已排序牌堆的正确位置。

一、算法原理

初始:[5, 2, 4, 6, 1, 3]
第 1 轮插入 2: [2, 5, 4, 6, 1, 3]
第 2 轮插入 4: [2, 4, 5, 6, 1, 3]
第 3 轮插入 6: [2, 4, 5, 6, 1, 3]
第 4 轮插入 1: [1, 2, 4, 5, 6, 3]
第 5 轮插入 3: [1, 2, 3, 4, 5, 6]

二、代码实现

def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key
    return arr

三、复杂度

最好 O(n),平均 O(n²),最坏 O(n²),空间 O(1),稳定

四、应用

小规模数据、几乎有序数据

总结

插入排序是三种简单排序中最实用的。

下一篇:希尔排序

发表回复

后才能评论