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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
Python实现删除文件但保留指定文件
Jun 21 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
Python 通过打码平台实现验证码的实现
May 13 Python
详解pandas数据合并与重塑(pd.concat篇)
Jul 09 Python
django项目登录中使用图片验证码的实现方法
Aug 15 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
python字符串替换re.sub()实例解析
Feb 09 Python
pytorch ImageFolder的覆写实例
Feb 20 Python
推荐值得学习的12款python-web开发框架
Aug 10 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 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
php 购物车完整实现代码
2014/06/05 PHP
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
js评分组件使用详解
2017/06/06 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python实现ip查询示例
2014/03/26 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python实现密码薄文件读写操作
2019/12/16 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
软件工程师岗位职责
2013/11/16 职场文书
分厂厂长岗位职责
2013/12/29 职场文书
一年级语文教学反思
2014/02/13 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
2014年档案室工作总结
2014/12/01 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
Python MNIST手写体识别详解与试练
2021/11/07 Python
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技