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的Urllib库的一些高级用法
Apr 30 Python
Python基础语法(Python基础知识点)
Feb 28 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
python环境下安装opencv库的方法
Mar 05 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
python某漫画app逆向
Mar 31 Python
python中%格式表达式实例用法
Jun 18 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 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
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
python实现的防DDoS脚本
2011/02/08 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
导师工作推荐信
2015/03/27 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript