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通过90行代码搭建一个音乐搜索工具
Jul 29 Python
使用Python神器对付12306变态验证码
Jan 05 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
Python变量赋值的秘密分享
Apr 03 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
python交易记录整合交易类详解
Jul 03 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
Python 列表的清空方式
Jan 13 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
python使用多线程查询数据库的实现示例
Aug 17 Python
了解一下python内建模块collections
Sep 07 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
某公司部分笔试题
2013/11/05 面试题
小学英语教学反思
2014/01/30 职场文书
军训自我鉴定范文
2014/02/13 职场文书
施工质量承诺书范文
2014/05/30 职场文书
庆七一活动总结
2014/08/27 职场文书
创业计划书之网吧
2019/10/10 职场文书
python中pycryto实现数据加密
2022/04/29 Python