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使用微信SDK实现的微信支付功能示例
Jun 30 Python
python队列queue模块详解
Apr 27 Python
python3.x实现发送邮件功能
May 22 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
解决Django连接db遇到的问题
Aug 29 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
基于python的列表list和集合set操作
Nov 24 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
JS验证码实现代码
2017/09/14 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
JS实现多功能计算器
2020/10/28 Javascript
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
副总经理岗位职责
2014/03/16 职场文书
创业计划书详解
2019/07/19 职场文书
导游词书写之黄山
2019/08/06 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
深入浅析React中diff算法
2021/05/19 Javascript