Python实现希尔排序算法的原理与用法实例分析


Posted in Python onNovember 23, 2017

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

希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。

希尔排序的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。(插入排序可参考前面一篇Python插入排序算法)

Python实现代码如下:

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

运行结果:

Python实现希尔排序算法的原理与用法实例分析

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

Python 相关文章推荐
python基础教程之数字处理(math)模块详解
Mar 25 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
Python实现ping指定IP的示例
Jun 04 Python
Python BS4库的安装与使用详解
Aug 08 Python
python-opencv颜色提取分割方法
Dec 08 Python
Python设计模式之外观模式实例详解
Jan 17 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
FFrpc python客户端lib使用解析
Aug 24 Python
python 并发下载器实现方法示例
Nov 22 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
浅谈Python程序的错误:变量未定义
Jun 02 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 #Python
Python3 伪装浏览器的方法示例
Nov 23 #Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 #Python
python数字图像处理之高级滤波代码详解
Nov 23 #Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 #Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 #Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 #Python
You might like
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
PHP attributes()函数讲解
2019/02/03 PHP
jquery中:input和input的区别分析
2011/07/13 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python制作Windows系统服务
2017/03/25 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
Python中实现输入一个整数的案例
2020/05/03 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
新员工欢迎词
2014/01/12 职场文书
音乐教学随笔感言
2014/02/19 职场文书
决心书范文
2014/03/11 职场文书
年终晚会活动方案
2014/08/21 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
红色电影观后感
2015/06/18 职场文书
三八妇女节致辞
2015/07/31 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书