zoukankan      html  css  js  c++  java
  • 算法之LOWB三人组之插入排序

    插入排序

    思想:类似于抽扑克牌,共有8张扑克牌,手里默认有一张,桌面上有7张,我们每次从桌面上抽一张和手里的牌进行比较,如果比手里的牌大,则直接放到手里的牌的后面,如果比手里的牌小,则放到手里的牌的前面,保证你放的每一次都会产生一个有序区。当牌完的时候,这8张牌也就排好了顺序。这就是插入排序

    时间复杂度为O(n^2)

    def insert_sort(li):
        for i in range(1, len(li)):
            tmp = li[i]  # 摸到的牌存一个变量中
            j = i - 1  # 模到的牌的前一位的下标
            # 当手里的牌比摸到的大的时候
            while li[j] > tmp and j >= 0:
                # 值向右移一位,
                li[j+1] = li[j]
                # 同时j的下标已经是tmp的下标,还要再上前一位
                j -= 1
            # 如果摸到的牌比手里的大,那么直接插入j的后一位
            li[j+1] = tmp
            print(li)
    
    li = [3,2,4,1,5,7,9,6,8]
    输出结果:

    gai

  • 相关阅读:
    BUAA OO Unit1 表达式求导
    中介者模式
    命令模式
    观察者模式
    解释器模式
    策略模式
    迭代器模式
    模板方法模式
    代理模式
    桥接模式
  • 原文地址:https://www.cnblogs.com/lishi-jie/p/9916961.html
Copyright © 2011-2022 走看看