算法--10.插入排序

插入排序

以扑克牌为例进行讲解

  • 初始时手里(有序区)只有一张牌
  • 每次(从无序区)摸一张牌,插入到手里已有牌的正确位置
    如下图:

在这里插入图片描述
假设我们现在手里有这样几张牌[2,1,5,3,7,9,8,4,6],2是我们手里的牌,而2后面的牌是我们要依次去摸的牌,规定我们每次只能摸一张牌,且手里的牌和摸到的牌需要根据从小到大顺序排列好,那么我们将实际问题以代码的形式展示:

def insert_sort(li):
    for i in range(1,len(li)):#摸到的牌的下标,摸牌的次数
        tmp = li[i]#tmp是摸到的牌
        j = i-1 #手里的牌的下标
        while j >= 0 and li[j] > tmp:
        #手里牌的下标不能小于0且手里的牌大于所摸到的牌
            li[j+1] = li[j]
            j-=1
         else:
        #手里牌小于摸到的牌时,将摸到的牌的位置放到手里牌的右边
        	li[j+1] = tmp

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值