插入排序(python)

插入排序:以打扑克牌的时候摸牌在手里面排序为例,一开始定义一张牌在手里,摸一张牌就和手里面的牌进行对比,如果比手里面这张牌大就插到手里面那张牌的右边,反之插到左边。当摸到第三张牌的时候,把第三张牌与手里面的每张牌进行对比,把它插到应该的位置,以此类推。

插入排序的过程

1.模拟摸牌的过程

2.摸到牌比自己手里面最后一张牌大的话就插到手里面牌的最后(即放到原来的位置不用管)

3.摸到的牌比自己手里面的最后一张牌小的话就将手里面的牌向后移动一位,在和手里面的牌的倒数第二张再进行比较,如果还小的话再次进行移位比较,一直找到它该放的位置

代码实现:

def insert_sort(li):
    # 这里的循环就是摸牌的动作,对整个列表进行摸牌,从第二张牌开始
    for i in range(1,len(li)):
        # j 就是指手里的牌 而且是最后一张
        j = i - 1
        # 因为需要插入操作,数据可能被覆盖,所以需要一个参数进行储存
        tmp = li[i]
        # 这里的循环是指当摸到的那张牌比手里面小的话,进行和手里面的牌从右至左进行对比,找到它该插入的位置
        # 因为要和手里面的牌进行对比,手里面的牌最小的下标是0,所以要保证j不会越界
        while tmp < li[j] and j >= 0:
            # 如果摸到的那张牌比手里面的牌小的话就和手里面的牌进行比较,手里面的牌比摸到的牌大的话就将手里面的牌像右移动一位
            li[j + 1]  = li[j]
            j -= 1
        # 这里的赋值就是指当摸到的牌
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平a骗大招

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值