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基础教程之序列详解
Aug 29 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
Python网站验证码识别
Jan 25 Python
Python 基础之字符串string详解及实例
Apr 01 Python
python使用turtle库绘制时钟
Mar 25 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
Flask配置Cors跨域的实现
Jul 12 Python
Python实现序列化及csv文件读取
Jan 19 Python
基于pycharm实现批量修改变量名
Jun 02 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
在pyCharm中下载第三方库的方法
Apr 18 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伪静态之APACHE篇
2014/06/02 PHP
Destoon实现多表查询示例
2014/08/21 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python如何制作英文字典
2019/06/25 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python偏函数实现原理及应用
2020/11/20 Python
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
Java面试题及答案
2012/09/08 面试题
大学生个人自我鉴定
2013/12/03 职场文书
《小小雨点》教学反思
2014/02/18 职场文书
幼儿园评语大全
2014/04/17 职场文书
小学课外活动总结
2014/07/09 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
就业推荐表院系意见
2015/06/05 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
Redis Stream类型的使用详解
2021/11/11 Redis
详解Python如何批量采集京东商品数据流程
2022/01/22 Python
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL