用Python写十大排序算法之插入排序

十大算法之三之插入排序

插入排序原理
 插入排序区别于冒泡一位一位的去交换位置,也区别于选择排序的比对,对
 于其他人用插扑克牌比较,我更习惯于用在体育课上排队解释,先找位置后插人(此图来源于博客园 —像
 素)在体育课刚开始的时候,假如我们不去按身高排,就相当于原始数据然后开始进行排序
  • 赋值思路 (为了方便理解代码程序 我直接将代码里面的元素在这赋予意义,只是个人声明,朋友们可以自己换。)
    因为要产生对比,我们直接从第二位开始比较第一位,抽出第二位,此时就会产生一个空位,在外面给二号位一个容身之地,我们将取出来在外面要和其他比较的这个地方的位置称作 i赋值为num 每次循环的i代表的其实就是到第几个数该进入循环了则我们可以将列表lst[i]赋值给num 可得 num=lst[i]
    此图借鉴于博客园  ——像素找位置(我做的是从小到大)
    我们用for循环循环j值用来保存元素应该插入的位置,注意,一定要注意lst[j]表示的一定是位置而不是数值如果发现我们的num值比他的前一位也就是lst[j-1]小,那么我们把我们的lst[j]的位置,与他的前一位也就是lst[j-1]去用等号交换,也就产生了lst[j] = lst[j-1]那么他们两个的位置也就发生了交换。
    但如果num大于或等于我们的lst[j-1]我们完全可以用else概括这种情况,只要跳出这个if语句就行
    最后赋值
    找完位置以后,我们就可以把我们num的值给我们的lst[j]了,给lis[j]赋予一个灵就是num
    lst[j]=num
    然后我们输出打印list就行
这下就可以写出我们的代码
  1 #!/usr/bin/python3                                                          
  2 #插入排序
  3 lst = [1,9,8,5,6,7,4,3,2]
  4 print('这是原数组',lst)
  5 for i in range(0,len(lst)):
  6     num = lst[i]
  7     for j in range(i,-1,-1):#j 保存元素的应该插入的位置
  8         if num < lst[j-1]:
  9             lst[j] = lst[j-1]#后移
 10         else:
 11             break
 12     lst[j]=num
 13 print('这是输出后的',lst)
生成值

这是原数组 [1, 9, 8, 5, 6, 7, 4, 3, 2] 这是输出后的 [1, 2, 3, 4, 5, 6, 7, 8, 9]

总结

插入排序的交换位置容易与冒泡思想相重合,而在给num赋值那一块又和选择排序比较像,所以思路上要转过弯,希望对大家有所帮助,如有问题,私信我 ,我们互相进步
初入python ,承蒙关照

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值