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之print详解
Sep 28 Python
Python脚本获取操作系统版本信息
Dec 17 Python
python使用mysql的两种使用方式
Mar 07 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
浅谈python常用程序算法
Mar 22 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python返回数组的索引实例
Nov 28 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
Apr 22 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 Python
python文件路径操作方法总结
Dec 21 Python
python实现双向链表原理
May 25 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获取一个变量的名字的方法
2014/09/05 PHP
PHP查询快递信息的方法
2015/03/07 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
django如何实现视图重定向
2019/07/24 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
如何使用repr调试python程序
2020/02/28 Python
如何在python中实现线性回归
2020/08/10 Python
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
文秘档案管理岗位职责
2014/03/06 职场文书
机关出纳岗位职责
2014/04/03 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
新闻学专业求职信
2014/07/28 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
企业投资意向书
2015/05/09 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs