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入门教程
Feb 08 Python
Python实现的二维码生成小软件
Jul 11 Python
Python对list列表结构中的值进行去重的方法总结
May 07 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
Django后台管理系统的图文使用教学
Jan 20 Python
python异常处理try except过程解析
Feb 03 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
如何理解python面向对象编程
Jun 01 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
如何基于Python爬取隐秘的角落评论
Jul 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
详谈js模块化规范
2017/07/07 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现股市信息下载的方法
2015/06/15 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
django中模板的html自动转意方法
2018/05/27 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
.net软件工程师应聘上机试题
2015/03/10 面试题
护理专业毕业生自荐信范文
2014/01/05 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
财务部会计岗位职责
2015/02/03 职场文书
电信营业员岗位职责
2015/04/14 职场文书