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 11 Python
探究Python中isalnum()方法的使用
May 18 Python
Python自动扫雷实现方法
Jul 25 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
python模块smtplib学习
May 22 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
Python中的Cookie模块如何使用
Jun 04 Python
Python logging模块原理解析及应用
Aug 13 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 Python
python 判断文件或文件夹是否存在
Mar 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实现生成验证码实例分享
2016/04/10 PHP
关于php开启错误提示的总结
2019/09/24 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
React优化子组件render的使用
2019/05/12 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
手写一个python迭代器过程详解
2019/08/27 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
python接入支付宝的实例操作
2020/07/20 Python
Python configparser模块应用过程解析
2020/08/14 Python
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
管道维修工岗位职责
2013/12/27 职场文书
临床护理求职信
2014/04/26 职场文书
英语专业自荐书
2014/06/13 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
班主任自我评价范文
2015/03/11 职场文书
公司的力量观后感
2015/06/05 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers