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中使用装饰器和元编程实现结构体类实例
Jan 28 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
详解Python爬虫的基本写法
Jan 08 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
Python数据库小程序源代码
Sep 15 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
python 实现任务管理清单案例
Apr 25 Python
python中加背景音乐如何操作
Jul 19 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python自定义解析简单xml格式文件的方法
2015/05/11 Python
python中zip和unzip数据的方法
2015/05/27 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
在python中bool函数的取值方法
2018/11/01 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
python3调用windows dos命令的例子
2019/08/14 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
python+opencv实现车道线检测
2021/02/19 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
新大陆软件面试题
2016/11/24 面试题
学前教育毕业生自荐信
2013/10/29 职场文书
师德师风自查总结
2014/10/14 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js
Golang数据类型和相互转换
2022/04/12 Golang