美文网首页
Python 排序算法之插入排序(3/8)

Python 排序算法之插入排序(3/8)

作者: Paycation | 来源:发表于2018-05-11 22:18 被阅读63次

    思想:
    假如有列表:
    5 4 3 1 2
    想象 5 是已经排好序部分的第一项。因此从第 2 项 4 开始。
    首先把 4 抽取出来,temp = 4,然后比较 temp < 5。将 5 后推 1 位,于是变成:
    5 5 3 1 2
    继续往前看,没有数字了,于是把 4 放回列表:
    4 5 3 1 2
    此时已经排好序的部分长度为 2 了。继续循环到 3 这个位置,装入容器 temp = 3,temp < 5,于是后推:
    4 5 5 1 2
    继续往前看,temp < 4,那么:
    4 4 5 1 2
    然后前面没有数字了,放回 temp:
    3 4 5 1 2
    ... 后面以此类推。
    代码实现如下:

    def insert_sort(lst):
        n = len(lst)
        for i in range(1, n):
            temp = lst[i]
            index = i
            while temp < lst[index-1] and index >= 1:
                lst[index] = lst[index-1]
                index -= 1
            lst[index] = temp
        return lst
    

    记忆方式: for + while 结构。

    要点:

    1. 由于是抽离一个数字出来并从第二项开始比,因此一开始就把第二项放入临时容器。
    2. 注意 while 中,是将 temp 和排好序的部分一一对比,而不是 lst[index],因为 index 会变化。
    3. while 中的第 2 条件很好理解。因为前面是 lst[index-1],显然 index-1>=0,因此 index >= 1。

    相关文章

      网友评论

          本文标题:Python 排序算法之插入排序(3/8)

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