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批量下载图片的三种方法
Apr 22 Python
用Python实现QQ游戏大家来找茬辅助工具
Sep 14 Python
python实现学生信息管理系统
Apr 05 Python
python如何为创建大量实例节省内存
Mar 20 Python
python调用摄像头拍摄数据集
Jun 01 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
python编写猜数字小游戏
Oct 06 Python
python滑块验证码的破解实现
Nov 10 Python
python常用数据重复项处理方法
Nov 22 Python
Django实现微信小程序支付的示例代码
Sep 03 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
手把手教你用Django执行原生SQL的方法
Feb 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 获取目录下的图片并随机显示的代码
2009/12/28 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
用 JSON 处理缓存
2007/04/27 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
经济信息管理专业大学生求职信
2013/09/27 职场文书
大学毕业生通用自荐信范文
2013/10/31 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
给老婆的保证书范文
2014/04/28 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
高中信息技术教学反思
2016/02/16 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
Pandas数据结构之Series的使用
2022/03/31 Python
Android自定义双向滑动控件
2022/04/19 Java/Android