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中使用全局日志时需要注意的问题
May 06 Python
python入门教程之识别验证码
Mar 04 Python
django将图片上传数据库后在前端显式的方法
May 25 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
selenium+python自动化测试环境搭建步骤
Jun 03 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
Python Django 实现简单注册功能过程详解
Jul 29 Python
python实现复制大量文件功能
Aug 31 Python
python实现画出e指数函数的图像
Nov 21 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
Python的三个重要函数详解
Jan 18 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 过滤器实现代码
2010/08/09 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python Requests 基础入门
2016/04/07 Python
Python 装饰器深入理解
2017/03/16 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Pytorch之Variable的用法
2019/12/31 Python
python里glob模块知识点总结
2021/01/05 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
银行主办会计岗位职责
2014/08/13 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
办公室规章制度范本
2015/08/04 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书