插入排序(Insertion Sort)的基本思想是:将列表分为2部分,左边为排序好的部分,右边为未排序的部分,循环整个列表,每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。

插入排序非常类似于整扑克牌。

在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。
也许你没有意识到,但其实你的思考过程是这样的:现在抓到一张7,把它和手里的牌从右到左依次比较,7比10小,应该再往左插,7比5大,好,就插这里。为什么比较了10和5就可以确定7的位置?为什么不用再比较左边的4和2呢?因为这里有一个重要的前提:手里的牌已经是排好序的。现在我插了7之后,手里的牌仍然是排好序的,下次再抓到的牌还可以用这个方法插入。编程对一个数组进行插入排序也是同样道理,但和插入扑克牌有一点不同,不可能在两个相邻的存储单元之间再插入一个单元,因此要将插入点之后的数据依次往后移动一个单元。

source = [92, 77, 67, 8, 6, 84, 55, 85, 43, 67]for index in range(1,len(source)):current_val = source[index] #先记下来每次大循环走到的第几个元素的值position = indexwhile position > 0 and source[position-1] > current_val: #当前元素的左边的紧靠的元素比它大,要把左边的元素一个一个的往右移一位,给当前这个值插入到左边挪一个位置出来source[position] = source[position-1] #把左边的一个元素往右移一位position -= 1 #只一次左移只能把当前元素一个位置 ,还得继续左移只到此元素放到排序好的列表的适当位置 为止source[position] = current_val #已经找到了左边排序好的列表里不小于current_val的元素的位置,把current_val放在这里print(source)
结果:[77, 92, 67, 8, 6, 84, 55, 85, 43, 67]
[67, 77, 92, 8, 6, 84, 55, 85, 43, 67]
[8, 67, 77, 92, 6, 84, 55, 85, 43, 67]
[6, 8, 67, 77, 92, 84, 55, 85, 43, 67]
[6, 8, 67, 77, 84, 92, 55, 85, 43, 67]
[6, 8, 55, 67, 77, 84, 92, 85, 43, 67]
[6, 8, 55, 67, 77, 84, 85, 92, 43, 67]
[6, 8, 43, 55, 67, 77, 84, 85, 92, 67]
[6, 8, 43, 55, 67, 67, 77, 84, 85, 92]
#更容易理解的版本data_set = [ 9,1,22,9,31,-5,45,3,6,2,11 ]for i in range(len(data_set)):#position  = iwhile i > 0 and data_set[i] < data_set[i-1]:# 右边小于左边相邻的值tmp = data_set[i]data_set[i] = data_set[i-1]data_set[i-1] = tmpi -= 1# position  = i# while position > 0 and data_set[position] < data_set[position-1]:# 右边小于左边相邻的值#     tmp = data_set[position]#     data_set[position] = data_set[position-1]#     data_set[position-1] = tmp#     position -= 1

python插入排序相关推荐

  1. python插入排序演示源码

    工作闲暇时间,把写内容过程较好的内容段做个备份,下面的内容内容是关于python插入排序演示的内容,应该能对各朋友也有用处. def insert_sort(t): for i in xrange(l ...

  2. python 插入排序算法

    一.概念及原理 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上 ...

  3. python插入排序_从Python看排序:插入排序

    在学习排序算法时,我们可以经常看到插入排序的身影.我们继续用扑克牌来描述该算法的实现方式.假设有5张牌以如下方式堆放在桌面上: 将面上的一张牌拿起并放在手上: 因为这是第一张牌,所以我们无需考虑其位置 ...

  4. python插入排序算法总结

    插入排序算法总结: 插入算法的核心是 每次循环到一个数时,都认为这个数之前的数列都是排好序的,将一个数插入到已经排好序的有序数列中,从而得到一个新的.个数加一的有序数列. 过程:从第一个元素开始,第一 ...

  5. python插入排序_python简单的实现插入排序和二分插入排序

    零:环境 Python 3.6.5 JetBrains PyCharm 2018.1.4 x64 一:正常的插入排序 插入排序如字面意思,是将数据一个一个的插入到列表里以形成有序数列 插入排序的前提是 ...

  6. python插入排序_python 插入排序,选择排序

    插入排序: def insert_sort(lst): for i in range(1,len(lst)): x=lst[i] #x是一个临时变量,表示当前轮到的数字 j=i #临时变量 j ,为后 ...

  7. python插入排序算法详解-面试常考

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行! 如有转载,请 ...

  8. python 插入排序,选择排序

    插入排序: def insert_sort(lst):     for i in range(1,len(lst)):         x=lst[i]                         ...

  9. python插入排序实现及详解

    插入排序的思想: 插入排序的思想就是将待排序的数据插入到其合适的位置.我们先从一个简单的例子开始,假如现在有 lst= [1,2,6,7,5] 这个list基本有序,只要将5放到6之前就能完成排序.从 ...

  10. Python ❀ 插入排序

    插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入: def insertionSo ...

最新文章

  1. 微软虚拟化解决方案课件
  2. VTK:绘图之BarChart
  3. [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及防御机理
  4. flash挂载到系统 spi_jffs2根文件系统挂载不上spi flash
  5. 【蓝桥杯单片机】PWM(LED亮度调节)
  6. 喜茶多名员工与外卖小哥互殴 喜茶官方:辞退!
  7. 使用Google zxing生成二维码
  8. docker开启两个MySQL容器_Docker下运行两个Mysql5.7容器
  9. Linux 使用shell命令复制文件
  10. linux 查看策略路由,Linux下的策略路由。
  11. matlab 稳定系统,matlab分析系统的稳定性
  12. uni-app App端优化
  13. java nas smb_FreeNAS 02:深入 SMB 服务使用
  14. php删除二维数组元素_php怎样删除二维数组中的元素
  15. java-net-php-python-jspm现代化社区去也管理系统计算机毕业设计程序
  16. 如何将m3u8格式转成MP4以及可播放格式
  17. mysql导入微信小程序云开发_微信小程序-云开发数据库上传json文件
  18. 最优传输传记(optimal transport)一——最优传输模型
  19. vue 项目打包部署到金蝶
  20. C语言求最大公约数三种方法详解

热门文章

  1. Android常用提示框(dialog和popuwindow)
  2. Python使用正则爬取51job
  3. java当月日历_java程序——输出当月日历表
  4. php 计算两点地理坐标的距离
  5. Xilinx ISE14.2新手入门
  6. 全网首发:(解决办法)MAC OS Xcode给应用设置沙箱(Enable App Sandbox)之后,运行报错Illegal instruction: 4
  7. Failed to register native method nativeSetStatusCallback in base.apk
  8. 工作要求,写了一些没用的设计文档
  9. C中得到4号错误(中断),怎么办
  10. 管理感悟:能图像不文字