python_插入排序

插入排序

排序思路

  • 1、初始时手里(有序区)只有一张牌。
  • 2、每次从剩余(无序区)中摸一张牌,插入到手里已有牌的正确位置。

实现

def insert_sort(li):
    for i in range(1,len(li)):  #第一次手上有一张牌,还需n-1趟,i表示摸到的牌的下标
        tmp =li[i]
        j =i-1 #j表示手里最后一张牌(从左往右)的下标
        while j>=0 and li[j] > tmp:  #如果手中这张牌比摸到的牌小则查到这张牌的右边位置。如果j=-1 
            li[j+1]=li[j]   #把数往右移动
            j -= 1 #待比较的牌对应的下标往左移动
        li[j+1] =tmp  #j+1就为插入的位置
        print(li) #每趟执行完成后打印
li=[3,4,2,1,5,7,8,6,9]
print(li)
insert_sort(li)

[3, 4, 2, 1, 5, 7, 8, 6, 9]
[3, 4, 2, 1, 5, 7, 8, 6, 9]
[2, 3, 4, 1, 5, 7, 8, 6, 9]
[1, 2, 3, 4, 5, 7, 8, 6, 9]
[1, 2, 3, 4, 5, 7, 8, 6, 9]
[1, 2, 3, 4, 5, 7, 8, 6, 9]
[1, 2, 3, 4, 5, 7, 8, 6, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值