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 相关文章推荐
动态创建类实例代码
Oct 07 Python
Python爬取读者并制作成PDF
Mar 10 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
python ddt实现数据驱动
Mar 14 Python
Django实现表单验证
Sep 08 Python
详解Python:面向对象编程
Apr 10 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
python中Pexpect的工作流程实例讲解
Mar 02 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部分常见问题总结
2008/03/27 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
node.js中的fs.statSync方法使用说明
2014/12/16 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
Python开发编码规范
2006/09/08 Python
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
进一步理解Python中的函数编程
2015/04/13 Python
python实现windows下文件备份脚本
2018/05/27 Python
python中的字符串内部换行方法
2018/07/19 Python
python tkinter控件布局项目实例
2019/11/04 Python
关于python中导入文件到list的问题
2020/10/31 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
会计专业自我鉴定
2014/02/10 职场文书
师恩难忘教学反思
2014/04/27 职场文书
贷款委托书
2014/08/01 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server