Python中使用插入排序算法的简单分析与代码示例


Posted in Python onMay 04, 2016

问题描述

将一组随机排列的数字重新按照从小到大的顺序排列。

插入算法

每次从数组中取一个数字,与现有数字比较并插入适当位置。

如此重复,每次均可以保持现有数字按照顺序排列,直到数字取完,即排序成功。

这很像打牌时的抓牌情况,

第一个条件:保持手上的牌的顺序是正确的
第二个条件:每次抓到新的牌均按照顺序插入手上的牌中间。
保证这两条不变,那么无论抓了几张牌,最后手上的牌都是依照顺序排列的。

Python 实现:

def insertion_sort(n):
 if len(n) == 1:
  return n
 b = insertion_sort(n[1:])
 m = len(b)
 for i in range(m):
  if n[0] <= b[i]:
   return b[:i]+[n[0]]+b[i:]
 return b + [n[0]]

   
另一个版本:

def insertion_sort(lst):
 if len(lst) == 1:
  return lst

 for i in xrange(1, len(lst)):
  temp = lst[i]
  j = i - 1
  while j >= 0 and temp < lst[j]:
   lst[j + 1] = lst[j]
   j -= 1
  lst[j + 1] = temp
 return lst
Python 相关文章推荐
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
Django实现自定义404,500页面教程
Mar 26 Python
利用aardio给python编写图形界面
Aug 21 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
python实现音乐下载器
Apr 15 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
python for循环remove同一个list过程解析
Aug 14 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
Python中函数参数设置及使用的学习笔记
May 03 #Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 #Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 #Python
Python中字符串的格式化方法小结
May 03 #Python
Python实现约瑟夫环问题的方法
May 03 #Python
Python实现堆排序的方法详解
May 03 #Python
python web框架学习笔记
May 03 #Python
You might like
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
css配合jquery美化 select
2013/11/29 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
javascript中new关键字详解
2015/12/14 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
Python中实现常量(Const)功能
2015/01/28 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
python 回溯法模板详解
2020/02/26 Python
keras 权重保存和权重载入方式
2020/05/21 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
先进个人获奖感言
2014/01/24 职场文书
烹饪自我鉴定
2014/03/01 职场文书
三八节主持词
2014/03/17 职场文书
食品安全责任书
2014/04/15 职场文书
安全演讲稿大全
2014/05/09 职场文书
大学迎新标语
2014/06/26 职场文书
领导工作表现评语
2015/01/04 职场文书
党支部意见范文
2015/06/02 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
python 闭包函数详细介绍
2022/04/19 Python