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中删除文件的程序代码
Mar 13 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
Python smtplib实现发送邮件功能
May 22 Python
python中itertools模块zip_longest函数详解
Jun 12 Python
详解django中使用定时任务的方法
Sep 27 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
详解Python设计模式之策略模式
Jun 15 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
Python控制鼠标键盘代码实例
Dec 08 Python
Python 中的Sympy详细使用
Aug 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中的array数组类型分析说明
2010/07/27 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
定义php常量的详解
2013/06/09 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
vue代理和跨域问题的解决
2018/07/18 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
python paramiko模块学习分享
2017/08/23 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
python语言的优势是什么
2020/06/17 Python
Python通过字典映射函数实现switch
2020/11/06 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
青年教师个人总结
2015/02/11 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书