Python排序搜索基本算法之希尔排序实例分析


Posted in Python onDecember 09, 2017

本文实例讲述了Python排序搜索基本算法之希尔排序。分享给大家供大家参考,具体如下:

希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率。希尔排序最关键的是选择步长,本程序选用Knuth在1969年提出的步长序列:1 4 13 40 121 364 1093 3280 。。。后一个元素是前一个元素*3+1,非常方便选取,而且效率还不错。代码如下:

#-*- coding: UTF-8 -*-
def shellSort(seq):
  length=len(seq)
  inc=0
  while inc<=length/3:
    inc=inc*3+1
  print(inc)
  while inc>=1:
    for i in range(inc,length):
      tmp=seq[i]
      for j in range(i,0,-inc):
        if tmp<seq[j-inc]:
          seq[j]=seq[j-inc]
        else:
          j+=inc
          break
      seq[j-inc]=tmp
    inc//=3
if __name__=='__main__':
  print("三水点靠木测试结果:")
  seq=[8,6,4,9,7,3,2,-4,0,-100,99]
  shellSort(seq)
  print(seq)

运行结果:

Python排序搜索基本算法之希尔排序实例分析

Python 相关文章推荐
Python的Django框架中的表单处理示例
Jul 17 Python
python使用RNN实现文本分类
May 24 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
Python使用Matlab命令过程解析
Jun 04 Python
Django serializer优化类视图的实现示例
Jul 16 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 #Python
python爬取亚马逊书籍信息代码分享
Dec 09 #Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 #Python
K-近邻算法的python实现代码分享
Dec 09 #Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 #Python
python学习之matplotlib绘制散点图实例
Dec 09 #Python
Python学习pygal绘制线图代码分享
Dec 09 #Python
You might like
php实现文件下载功能的几个代码分享
2014/05/10 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
php排序算法实例分析
2016/10/17 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
Python实现简单拆分PDF文件的方法
2015/07/30 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
Python的缺点和劣势分析
2019/11/19 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
软件测试面试题
2014/01/05 面试题
小学数学课后反思
2014/04/23 职场文书
导航工程专业自荐信
2014/09/02 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
Python 全局空间和局部空间
2022/04/06 Python