本文实例讲述了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]=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)

运行结果:

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

希望本文所述对大家Python程序设计有所帮助。

python希尔排序的优缺点_Python排序搜索基本算法之希尔排序实例分析相关推荐

  1. python中flush什么意思_python flush()定义及作用详解(实例分析)

    今天这篇文章我们来了解一下python之中的flush,在进入文章之前我们首先要知道我们要学的是什么东西,今天讲的是pythonflush,了解什么是flush,并且知道flash什么意思.这些东西我 ...

  2. python中pass的含义_python中pass语句意义与作用(实例分析)

    想必大家都是刚刚才开始接触python这门语言的,今天这篇文章就来带大家来了解一下python这门语言之中常常会用到的一个语句pass语句.想必大家都很好奇python中pass作用是什么,接下来我就 ...

  3. JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shel ...

  4. c++排序数组下标_看动画学算法之:排序 - 基数排序

    简介 之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过大,使用count排序是不现实的,其时间复杂度会膨胀. 而解决大范围的元素排序的办 ...

  5. python删除连续相同字符_Python 删除连续出现的指定字符的实例

    Python 删除连续出现的指定字符的实例 源起 我本想删写一小段代码用于删除一串字符串中的连续重复的指定字符,可能也是长时间不写代码,而且有的时候写代码只途快,很多基础知识都忘光了.我用Python ...

  6. python兔子编程_Python兔子生兔子算法,编程练习题实例十一

    Python兔子生兔子算法,编程练习题实例十一 Python兔子生兔子算法,编程练习题实例十一 没学习python之前就听说过一个兔子生兔子的数学算法问题.现在学习了python编程后,自然要用pyt ...

  7. python希尔排序的优缺点_Pythonの希尔排序

    1.[代码][Python]代码 # -*- coding: utf-8 -*- def step_half(n): """Original sequence: n/2, ...

  8. python类的继承优缺点_python 类的三大特性--继承

    继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题, 继承是一种创建新类的方式,在python中新建的类可以继承一个或多个父类,父 ...

  9. python简单小案例列表_python计算列表内各元素的个数实例

    python计算列表内各元素的个数实例 如下所示: list = [1,2,3,4,5,6,7,5,4,3,2,12] set = set(list) dict = {} for item in se ...

最新文章

  1. Hbase基础(特点、架构、应用场景、集群搭建、HA设计)这一篇就够了
  2. Django(part19)--Django中的应用
  3. javascript学习系列(7):数组中的concat方法
  4. python不等于_Python小课堂|注释+运算符
  5. pcl中set程序_PCL中分割方法的介绍(3)
  6. RobotStudio碰撞检测的设定
  7. Python进程池使用
  8. mysql分页优化方法
  9. 小批量梯度下降法MBGD
  10. ctb伺服驱动器说明书_伺服驱动器 CTB BK Servo
  11. Modown v4.11+Erphpdown10.01资源付费下载插件
  12. 双网卡同时上内外网设置教程
  13. android平板识别光驱,平板电脑看不了光盘?一个ORICO外置光驱就可以轻松搞定
  14. 清空数据库所有表中的数据
  15. java号码分身_电话号码分身
  16. 计算机保研夏令营准备流程建议
  17. Shiro基础应用——角色和权限校验
  18. 现在有什么地推项目_目前互联网都有哪些红利地推项目
  19. 操作系统笔记-----第一章 基本概述
  20. JavaScript 进阶面向对象ES6

热门文章

  1. Java反射机制深入详解
  2. mysql5.6创建用户并授予指定数据库或表权限
  3. wordpress 常用函数-wpdb类
  4. Barracuda Backup 5.4版本添加了更多云存储
  5. js中对变量初始化的重要性
  6. document.all.item的解释和一个表单向多页面提交
  7. 创建自定义排序用户界面
  8. 2019.3.18 异常处理和日志相关
  9. P2774 方格取数问题 网络最大流 割
  10. 无人车时代:用深度学习辅助行人检测