Python实现的插入排序算法原理与用法实例分析


Posted in Python onNovember 22, 2017

本文实例讲述了Python实现的插入排序算法原理与用法。分享给大家供大家参考,具体如下:

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法

插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

具体代码如下:

#-*- coding: UTF-8 -*-
import numpy as np
def InsertSort(a):
  for i in xrange(1,a.size):
    for j in xrange(i,0, -1):
      if a[j-1] > a[j]:
        a[j-1] , a[j] = a[j], a[j-1]
      else:
        break
if __name__ == '__main__':
  a = np.random.randint(0, 10, size = 10)
  print "Before sorting..."
  print "---------------------------------------------------------------"
  print a
  print "---------------------------------------------------------------"
  print "After sorting..."
  InsertSort(a)
  print "---------------------------------------------------------------"
  print a
  print "---------------------------------------------------------------"

运行结果:

Python实现的插入排序算法原理与用法实例分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
Python学生信息管理系统修改版
Mar 13 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
Django中多种重定向方法使用详解
Jul 17 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
python os.fork() 循环输出方法
Aug 08 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 Python
python操作链表的示例代码
Sep 27 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 #Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 #Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 #Python
python不换行之end=与逗号的意思及用途
Nov 21 #Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 #Python
pycharm远程调试openstack代码
Nov 21 #Python
Pycharm远程调试openstack的方法
Nov 21 #Python
You might like
人大复印资料处理程序_查询篇
2006/10/09 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
使用python实现简单五子棋游戏
2019/06/18 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
军训的自我鉴定
2013/12/10 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
推广普通话主题班会
2015/08/17 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书