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框架中的templates设置
May 11 Python
Python爬取国外天气预报网站的方法
Jul 10 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
django+echart数据动态显示的例子
Aug 12 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python OpenCV实现测量图片物体宽度
May 27 Python
一行Python命令实现批量加水印
Apr 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中的Memcache详解
2014/04/05 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
Python解决八皇后问题示例
2018/04/22 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python简单基础小程序的实例代码
2019/04/28 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
美术教师求职信范文
2015/03/20 职场文书
通知的写法
2015/04/23 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
vue使用echarts实现折线图
2022/03/21 Vue.js
Linux中sftp常用命令整理
2022/06/28 Servers