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 socket 超时设置 errno 10054
Jul 01 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
Python 模拟购物车的实例讲解
Sep 11 Python
python实现k-means聚类算法
Feb 23 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
详解python中eval函数的作用
Oct 22 Python
什么是python的函数体
Jun 19 Python
python Paramiko使用示例
Sep 21 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
德生S2000电路分析
2021/03/02 无线电
详解如何在云服务器上部署Laravel
2017/06/30 PHP
PHP与以太坊交互详解
2018/08/24 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
JavaScript入门基础
2015/08/12 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
Python中logging模块的用法实例
2014/09/29 Python
python中pygame模块用法实例
2014/10/09 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Python 读取位于包中的数据文件
2020/08/07 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
主办会计岗位职责
2014/03/13 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技