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中字典dict常用操作方法实例总结
Apr 04 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
python爬虫爬取网页表格数据
Mar 07 Python
python中使用zip函数出现错误的原因
Sep 28 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
汉字转化为拼音(php版)
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
如何在PHP程序中防止盗链
2008/04/09 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
对python中的argv和argc使用详解
2018/12/15 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
Python如何实现线程间通信
2020/07/30 Python
Python如何实现机器人聊天
2020/09/10 Python
Django实现简单的分页功能
2021/02/22 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
中职生自我鉴定范文
2013/10/03 职场文书
小学毕业演讲稿
2014/04/25 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python