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实现的二维码生成小软件
Jul 11 Python
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
Oct 08 Python
Python 对象中的数据类型
May 13 Python
Python深度优先算法生成迷宫
Jan 22 Python
python中logging包的使用总结
Feb 28 Python
Python常见内置高效率函数用法示例
Jul 31 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
keras 多任务多loss实例
Jun 22 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
虚拟机下载python是否需要联网
Jul 27 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
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP类型约束用法示例
2016/09/28 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
一些PHP的面试题
2015/05/06 面试题
大四毕业生学习总结的自我评价
2013/10/31 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
个人求职信范例
2014/01/29 职场文书
办公室主任个人总结
2015/02/28 职场文书
家装业务员岗位职责
2015/04/03 职场文书
初中体育课教学反思
2016/02/16 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书