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聊天程序实例代码分享
Nov 18 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
python实现websocket的客户端压力测试
Jun 25 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
python实现3D地图可视化
Mar 25 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
Python基于mediainfo批量重命名图片文件
Dec 29 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
javascript for循环性能测试示例
2019/08/07 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python中正则表达式与模式匹配
2019/05/07 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
SQL SERVER面试资料
2013/03/30 面试题
delegate与普通函数的区别
2014/01/22 面试题
临床医师专业个人自我评价
2014/01/08 职场文书
生产厂长岗位职责
2014/02/21 职场文书
台风停课通知
2015/04/24 职场文书
政协工作总结2015
2015/05/20 职场文书
收入证明申请书
2015/06/12 职场文书
治庸问责工作总结
2015/08/11 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript