参考:菜鸟教程  https://www.runoob.com/python3/python-insertion-sort.html

$ 插入排序(Insertion Sort)

构建局部有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

【例】有一个推理小说书单,现在决定一本一本看,并按喜好度从高到低排序
1.鸟人计划
2.斜屋犯罪
3.嫌疑人X的献身
4.占星术杀人魔法
5.十角馆事件
6.钟表馆事件
(如下蓝色部分表示有序部分)
看了第一本,暂时放在第一位,1,2,3,4,5,6(接下来拿第2本和前面的比)
看了第二本觉得更好看,2,1,3,4,5,6(接下来拿第3本和前面的比)
看了第三本觉得比前面的都好看,3,2,1,4,5,6(接下来拿第4本和前面的比)
看了第四本决定放于第三本之后,3,4,2,1,5,6(接下来拿第5本和前面的比)
……(都好看,太南了,编不下去了……嫌疑人、占星术、钟表馆更看,剩下三本也不知如何排……)

$ 插入排序代码实现

def insertionSort(arr): for i in range(1, len(arr)): key = arr[i] j = i-1  #j由i前一个索引开始(j的初值),一直到左遇到一个arr[j]不比key小while j >=0 and key < arr[j] : arr[j+1] = arr[j]   # key从i-1的位置开始和前面的数逐个比较,key小则“换位置”,
#            arr[j] = key     #每次比较,key小则换到这个位置,不过由于还要继续比较,不用此时赋值j = j-1arr[j+1] = key      # 循环条件不满足,即比到头了arr[-1+1]=key;或key不比前面的数小,把key赋值给上一轮的位置#测试数组
arr = [12, 11, 13, 5, 6]
insertionSort(arr)
print ("排序后的数组:")
for i in range(len(arr)): print ("%d" %arr[i])

Python3 插入排序相关推荐

  1. 排序法学习之插入排序(python3实现)

    一.排序原理 以从小到大排序为例,元素0为第一个元素,插入排序是从元素1开始,尽可能插到前面.插入时分插入位置和试探位置,元素i的初始插入位置为i,试探位置为i-1,在插入元素i时,依次与i-1,i- ...

  2. 算法导论之python实现插入排序

    插入排序的花费时间 c*n2, c 是常数 伪代码 INSERTION-SORT(A) for i  to A.length key = A[j] //Insert A[j] into the sor ...

  3. python学习-综合练习七(二分查找(递归)、线性查找、插入排序、快速排序、选择排序、冒泡排序、归并排序、堆排序)-实例

    文章目录 二分查找 线性查找 插入排序 快速排序 选择排序 冒泡排序 归并排序 堆排序 推荐代码一 推荐代码二 希尔排序 拓扑排序 说明:本篇博文的知识点大部分来自 Python3 实例 二分查找 二 ...

  4. python3示例_Python3 实例(七)

    原标题:Python3 实例(七) Python 将字符串的时间转换为时间戳 给定一个字符串的时间,将其转换为时间戳. 实例 import time a1 = "2019-5-10 23:4 ...

  5. 排序算法--(冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序)

    一.时间复杂度分析 - **时间复杂度**:对排序数据的总的操作次数.反应当n变化时,操作次数呈现什么规律 - **空间复杂度**:算法在计算机内执行时所需要的存储空间的容量,它也是数据规模n的函数. ...

  6. Python3进阶复习

    python3基础复习:Python3基础复习_でこもり さなえ的博客-CSDN博客 有好多本来应该算是进阶的内容,因为延伸,顺势就给写进基础复习里了,请一定要去看!!! 基础复习里的内容并不都是那么 ...

  7. 3.Python3标准库--数据结构

    (一)enum:枚举类型 import enum''' enum模块定义了一个提供迭代和比较功能的枚举类型.可以用这个为值创建明确定义的符号,而不是使用字面量整数或字符串 ''' 1.创建枚举 imp ...

  8. Python3 基础语法

    Python3 基础语法 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: ...

  9. 机票管理系统 python3 航班动态管理 文件存储 项目完整代码

    机票管理系统(python3) 一.问题分析 问题分析:从数据的逻辑结构.数据存储以及对数据的操作三个方面出发分析.各数据的关系是集合:数据存在文件之中,在内存中用对象数组来存储:涉及对数据的增删改查 ...

  10. Python3 基础

    Python3 基础知识笔记 ##################################################################################### ...

最新文章

  1. linux下编译php扩展
  2. 机甲才是男人的浪漫 这款Python版免费战争机甲类游戏,“白拿党”还在等什么?(超帅气)
  3. 工程师如何给女友买包?问问阿里“百事通”
  4. 记录之关于tensoflow中使用Adam优化算法导致模型保存时参数的变化的记录
  5. vue中关于flv.js的心得操作
  6. redis 怎么关闭写盘_Redis持久化策略
  7. 北京国际图书博览会暨2007 BIBF
  8. 1补码 2补码_8085微处理器中8位数字的1和2的补码
  9. .net 使用阿里云RocketMQ
  10. 计算机应用基础2010版知识点,2010计算机应用基础选择题(含答案版)重点.doc
  11. 微信又干了件大好事 老司机们快看!
  12. 解码(二):音视频解码上下文创建配置和打开avcodec_open2打开演示
  13. ubuntu安装最新的rails-4.2.0
  14. 计算机视觉 图像合成_合成数据如何促进计算机视觉
  15. 机器人设计必备的软件有哪些
  16. 增量式编码器工作原理超详细图解
  17. 镜像站:Github, Wiki, Google
  18. RFC2616中文版
  19. 谈谈Sublime Text 3 与 Soda Theme
  20. 使用SpringBoot及Construct2的WebSocket制作联机游戏(二)

热门文章

  1. AcWing每日一题 1934贝茜放慢脚步
  2. 优秀工程师应该具备哪些素质_优秀的工程师具有什么品质
  3. esp分区创建 linux_怎样向esp分区添加引导文件?
  4. QGIS二次开发01---临时绘制图层实现
  5. 程序员的职业规划_程序员如何能做好职业规划,走出迷惘呢?这个能力矩阵法要告诉你...
  6. Linux下的图片编辑软件和画图软件
  7. 爬虫是什么?可以用来干什么?
  8. rust发射台主楼_各专业分类词库(完全).doc
  9. UniApp使用navigateTo无法跳转到tabBar中的页面
  10. 【菜鸟必看】CSDN博客字体颜色编码大全,前端颜色编码,都在这里了!!