插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

插入排序分析



代码如下:

def insert_sort(li):for i in range(1, len(li)):  # 把第一个元素当做有序的从第二个位置,即下标为1的元素开始向前插入# 从第i个元素开始向前比较,如果小于前一个元素,交换位置for j in range(i, 0, -1):if li[j] < li[j - 1]:li[j], li[j - 1] = li[j - 1], li[j]else:breakif __name__ == '__main__':li = [23, 46, 678, 234, 78, 34, 978, 2, 123, 5, 12, 45]insert_sort(li)print(li)  # [2, 5, 12, 23, 34, 45, 46, 78, 123, 234, 678, 978]

时间复杂度

  • 最优时间复杂度:O(n) (升序排列,序列已经处于升序状态)
  • 最坏时间复杂度:O(n2)
  • 稳定性:稳定

插入排序 - python实现相关推荐

  1. 直接插入排序python实现

    直接插入排序python实现 算法思想 直接插入排序的算法思想在于:每一步将一个待排序的数字,插入到前面已经排好序的有序序列中去:重复上述插入数字操作,直到插完所有元素为止,此时序列已经全部排列完毕. ...

  2. python 嵌入 php,Python与PHP实现插入排序实例

    插入排序_Python与PHP的实现版(推荐) 插入排序Python实现 import random a=[random.randint(1,999) for x in range(0,36)] # ...

  3. Python天天美味(35) - 细品lambda

    lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):     return x**2 print f(4) Python中使用lambda的话,写成这样 g ...

  4. Python天天美味(32) - python数据结构与算法之堆排序

    1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data):     for i in ran ...

  5. python 判断div 之间的内容是否为空_python实现数据结构与算法之双端队列实现

    简介 双端队列(deque, double-ended queue),是一种具有队列和栈的性质的数据结构.双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行.双端队列可以在队列任意一端 ...

  6. Python天天美味(35) - 细品lambda(转)

    lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):     return x**2 print f(4) Python中使用lambda的话,写成这样 g ...

  7. python常见算法(chatgpt算法实现)

    以下是使用Python实现的几种常见的排序算法: ``` 以下是使用Python实现的几种常见的排序算法:1. 冒泡排序```python def bubble_sort(arr):n = len(a ...

  8. python学习之旅_第2天

    学习目标: 三天掌握 python 入门知识 学习内容: 1. Python3 迭代器与生成器 2. Python3 函数 3. Python3 数据结构 4. Python3 模块 5. Pytho ...

  9. Linux终端运行fasterrcnn,对yolo与fasterrcnn anchors的理解

    嵌入式&amp;iOS:回调函数(C)与block(OC)传 参/函数 对比 C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1 ...

最新文章

  1. Lambda表达式很鸡肋?它到底有何用呢?
  2. 线性可分 与线性不可分
  3. Charles(HTTP抓包工具软件)中文版
  4. 1、CSS 定位 (Positioning)
  5. 二叉树的链式结构递归遍历实现
  6. 回退n帧协议c语言代码,[计算机网络]Ch.3 数据链路层
  7. sql server排序慢_SQL 查询调优之 where 条件排序字段以及 limit 使用索引的奥秘
  8. 使用PHP创建SOCKET服务
  9. python实现目标检测_由浅入深:教你如何构建一个行人目标检测模型(Python)
  10. 360浏览器不能打开CSDN登陆页面
  11. mt管理器显示java_真正免root的MT管理器详细使用教程
  12. 4、Android 主流数据库框架
  13. 饿了么UI框架表单验证
  14. 【滑动窗口协议模拟】
  15. atomic 原子操作
  16. ATK-DTU-M750 物联网模块+MQTT(阿里云)配置(一)
  17. 服务器ahci模式安装系统,ahci模式下安装win7系统的方法
  18. iphone的致命硬伤
  19. mysql连接flush-hosts问题处理
  20. 与体育行业有关的e–r图_体育产业与相关产业的产业关联度研究

热门文章

  1. Gem5在全系统(FS)模式下运行自己的测试程序
  2. CSS浏览器兼容性与解决方法
  3. 【loj2585】【APIO2018】新家
  4. android播放html5视频,仅仅有声音没有图像视频
  5. android模拟按键问题总结[使用IWindowManager.injectKeyEvent方法](转)
  6. 修改 Mac 版 Safari、Chrome、FireFox、Opera 的 User-Agent
  7. 图片服务 - thumbor启用AutoJPG
  8. Oracle单个数据文件超过32G后需要扩容
  9. Qt Installer Framework翻译(5-2)
  10. css overflow: scroll 去滚动条后,低端手机有兼容问题,可以这样