插入排序从前往后遍历数组的每一个元素,对每一位元素都将其插入到已经有序的部分数组中,所以插入排序的要点就是找出要插入元素在已经有序的部分中的位置,同时,由于插入排序采用原地排序(in-place)算法,需要将有序部分中为这个元素腾出位置,采用的办法是将有序部分中的从找到的位置之后的所有元素都向后移动一个位置来解决。

问题1)(已解决)出现了重复插入最小值的结果

def insertion_sort(collection):# for element in collection[0:]:#因为是原地排序,所以要用到数组下标去作为有序和无序的分界点,并且有序部分需要向后移位。# 需要以当前插入元素的数组下标作为位置,所以不能使用这种遍历。for i in range(len(collection)):variable=collection[i]#开始遍历已经有序的部分,找出应该存放的位置for j in range(i):#因为i是区分点嘛,所以是遍历i左边的元素,但是range(5),j最大=4,所以不用i-1if(collection[j]>variable):#那么这个下标j就是被添加元素应该存放的位置#开始后移,把j这个下标给腾出来for k in range(i,j,-1):collection[k]=collection[k-1]#位置已经腾出,插入collection[j]=variablebreak#*******************因为没有写这句话的原因
#找到之后应该跳出上面的j循环,要不然就会从这个j开始继续向后比较,然后又交换return collection#结果
(sort) λ python bubble_sort.py
未排序之前:                                                                     [94, 37, 97, 31, 26, 79, 10, 35, 40, 6]
排序之后: [6, 6, 6, 6, 6, 6, 6, 6, 6, 10]
耗费时间: 0.0009999275207519531

  

转载于:https://www.cnblogs.com/Gaoqiking/p/11060651.html

Python排序 插入排序相关推荐

  1. python排序算法——插入排序

    python排序算法--插入排序 文章目录 python排序算法--插入排序 一.前言 二.描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序算法是指 ...

  2. python 排序算法:插入排序

    摘自:python 排序算法--插入排序 适用场景:一个新元素需要插入到一组已经是有序的数组中,或者是一组基本有序的数组排序. 比较性:排序时元素之间需要比较,所以为比较排序. 稳定性:从代码我们可以 ...

  3. Python排序算法总结

    Python排序算法总结 递归 在正式讲算法之前,先介绍一下递归.递归是一种解决问题的思路. 特点 调用自身 必须有一个明确的结束条件,比如if... 递归的两个阶段: 递推(压栈):到某个阶段,该阶 ...

  4. 带你掌握4种Python 排序算法

    摘要:在编程里,排序是一个重要算法,它可以帮助我们更快.更容易地定位数据.在这篇文章中,我们将使用排序算法分类器对我们的数组进行排序,了解它们是如何工作的. 本文分享自华为云社区<Python ...

  5. Python排序算法[二]:测试数据的迷雾散去

    算法试验中不仅仅要尝试使用不同的写法,更要注意测试所用数据的规律性,它们都会直接影响测试结果. 在上一篇文章<Python 排序算法[一]:令你茅塞顿开,却又匪夷所思>中我们学习了排序算法 ...

  6. 02_Python算法+数据结构笔记-冒泡排序-选择排序-插入排序-快排-二叉树

    b站视频:路飞IT学城 清华计算机博士带你学习Python算法+数据结构_哔哩哔哩_bilibili 文章目录 #11 排序介绍 #12 冒泡排序介绍 #13 冒泡排序 #14 选择排序 #15 插入 ...

  7. python排序算法——归并排序(附代码)

    python排序算法 --归并排序 文章目录 python排序算法 --归并排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...

  8. python排序方法sorted和list.sort()使用讲解

    python排序方法sorted和list.sort使用讲解 前言 一.排序函数的算法原理 二.sorted()和List.sort()使用方法讲解 1.sorted()函数使用方法 2.List.S ...

  9. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

最新文章

  1. 财务一体化项目,进度与计划17
  2. Android之NDK开发
  3. webpack和vue的按需加载组件、console、抓包
  4. mysql ldf文件太大_Linux_数据库清除日志文件(LDF文件过大),清除日志: 复制代码 代码如 - phpStudy...
  5. 2021中国集成电路行业投资市场研究报告
  6. Android SVG 和 VectorDrawable 的基本知识
  7. 先写一点informix的
  8. i++为什么不能作为左值,而++i可以作为左值
  9. 服务器v1v2v3v4性能区别,昂达平板电脑V1V2V3V4V5版本之间的区别
  10. exynos4412,tegra3,msm8960性能对比,参考对照exynos4210
  11. 【解决报错】failed to obtain JDBC Connection
  12. 卡通渲染 类罪恶装备与崩坏3渲染总结
  13. 校验18位身份证号码的正确性
  14. Laplance算子(二阶导数)
  15. vs2012运行c语言出现:无法查找或打开 PDB 文件
  16. html如何控制图片自动放缩,如何用js控制图片放大缩小
  17. 二代旅游网站CMS缓存列表
  18. 使用Asponse.cells生成图片如何去掉水印
  19. csp-202203
  20. 绩效考核指标KPI 听课笔记

热门文章

  1. matlab 计算数据转折点,计算轨迹(路径)中的转折点/枢轴点
  2. 游戏可以html+上运行吗,运行多个,如果在HTML游戏
  3. 建模大师怎么安装到revit中_工程师最爱的REVIT插件,让BIM建模溜到飞起!
  4. python数据包分析_python | 数据分析(一)- Numpy数据包
  5. c语言文件分类二进制,C语言实现文件版(二进制文件版)通讯录
  6. php发送邮件时间间隔,在使用phpmailer群发邮件时如何设置发送的时间间隔?
  7. 学习机软件测试,IBM P630 POWER4 AIX小型机适合软件测试及学习机
  8. tcplayer currenttime设置不成功_为什么你的“会员体系”不成功?权益设置很重要...
  9. .mvn 需要放git上吗_汽车行李架上可以放东西吗?放了东西可以跑高速吗?
  10. comsol分析时总位移代表什么_基于COMSOL的气动软体执行器仿真