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读写txt文本文件的操作方法全解析
Jun 26 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
python爬虫正则表达式之处理换行符
Jun 08 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
Python守护进程实现过程详解
Feb 10 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
Python如何导出导入所有依赖包详解
Jun 08 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 页面编码声明方法详解(header或meta)
2010/03/12 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
Python中List.index()方法的使用教程
2015/05/20 Python
Python常用的爬虫技巧总结
2016/03/28 Python
Python os.access()用法实例
2019/02/18 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
艺术设计专业求职自荐信
2014/05/19 职场文书
中学清明节活动总结
2014/07/04 职场文书
中国梦团日活动总结
2014/07/07 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
离婚案件被告代理词
2015/05/23 职场文书
清洁工工作总结
2015/08/11 职场文书
无故旷工检讨书
2015/08/15 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
七年级作文之雪景
2019/11/18 职场文书