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 对象内存占用
Jul 15 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
Python实现随机选择元素功能
Sep 14 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
浅述python中深浅拷贝原理
Sep 18 Python
Pycharm更换python解释器的方法
Oct 29 Python
python3安装speech语音模块的方法
Dec 24 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
面向对象学习之pygame坦克大战
Sep 11 Python
Python任务调度利器之APScheduler详解
Apr 02 Python
Python Opencv图像处理基本操作代码详解
Aug 31 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验证码(支持中文)
2007/02/14 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python字符串处理实例详解
2017/05/18 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
用pycharm开发django项目示例代码
2019/06/13 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
2014年社区学雷锋活动总结
2014/03/09 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python