Python 希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。

希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。


def shellSort(arr): n = len(arr)gap = int(n/2)while gap > 0: for i in range(gap,n): temp = arr[i] j = i while  j >= gap and arr[j-gap] >temp: arr[j] = arr[j-gap] j -= gap arr[j] = temp gap = int(gap/2)arr = [ 12, 34, 54, 2, 3] n = len(arr)
print ("排序前:")
for i in range(n): print(arr[i]), shellSort(arr) print ("\n排序后:")
for i in range(n): print(arr[i]),

执行以上代码输出结果为:

排序前:
12
34
54
2
3排序后:
2
3
12
34
54

天道酬勤系列之Python 希尔排序相关推荐

  1. 【python算法系列三】 希尔排序算法

    希尔排序,又叫"缩小增量排序",是对插入排序进行优化后产生的一种排序算法.它的执行思路是:把数组内的元素按下标增量分组,对每一组元素进行插入排序后,缩小增量并重复之前的步骤,直到增 ...

  2. python希尔排序的优缺点_Python排序搜索基本算法之希尔排序实例分析

    本文实例讲述了Python排序搜索基本算法之希尔排序.分享给大家供大家参考,具体如下: 希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率.希尔排序最关键的是选择步长,本程序选用Kn ...

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

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

  4. 希尔排序的java算法_Java算法系列篇 【希尔排序】

    什么? 搞Java不会算法? 由于个人兴趣原因以及工作所需,最近了解Java算法的相关案例 及时分享 感兴趣的欢迎交流 希尔排序 描述: 基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直 ...

  5. Python希尔排序

    以插入排序为基础,先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序. def shellSort( ...

  6. [ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序

    手撕排序算法系列之:希尔排序. 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等. 大家可以点击此链接阅读其他排序算法:排序算 ...

  7. 算法系列【希尔排序】篇

    常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 关于时间复杂度: 1.     平方阶 (O(n2)) 排序各类简单排序:直接插入 ...

  8. 希尔排序python实现

    希尔排序python实现 希尔排序是直接插入排序的加强版,也称为减小增量排序.以从小到大排序为例进行简要分析. 算法思想 希尔排序的排序思想在先将原序列划分成若干个子序列,其中划分的依据为按照间隔ga ...

  9. python算法与数据结构-希尔排序算法(35)

    阅读目录 一.希尔排序的介绍 二.希尔排序的原理 三.希尔排序的图解 四.希尔排序的python代码实现 五.希尔排序的C语言实现 六.希尔排序的时间复杂度 七.希尔排序的稳定性 一.希尔排序的介绍 ...

最新文章

  1. HashSet的使用
  2. 一体广告机实现思路,非常实用(二)
  3. php请求aspx,PHP用curl函数POST请求到ASP页面提示无效请求
  4. PostgreSQL的ecpg程序的调适与运行
  5. 教你用JS手写简单的秒表(精确到10ms,没有延迟)
  6. axure谷歌浏览器插件_都说谷歌浏览器好用,网页翻译插件插件必不可少
  7. #1097 : 最小生成树一·Prim算法
  8. SAP云平台部署应用时遇到的502 Updating service failed - Bad Gateway
  9. (备忘)打开office2010总是在配置进度
  10. BZOJ#3252. 攻略
  11. 24时区,GMT,UTC,DST,CST时间详解
  12. 人工智能学习(二)安装tensorflow与pytorch
  13. rocketmq--push消费过程
  14. c++结构体学习笔记!
  15. JavaScript—模块化(26)
  16. c语言怎么用右移代替除法,除法和算术右移之间的巧妙取代
  17. 关于英语猜词义的方法
  18. 主流浏览器发展史及其内核初探
  19. Java实现QQ邮箱验证
  20. 学习编程可以从事哪些行业

热门文章

  1. 天猫用户重复购买预测——特征工程
  2. C++习题:6-1 CCircle And CCylinder
  3. 计算机故障维修智能检测平台管理系统,计算机检测维修与数据恢复技能大赛竞赛设备采购项目.doc...
  4. vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法
  5. 2006胡润百富榜发布 张茵荣登中国第一位女首富
  6. 初学MSP430F5529定时器
  7. 计算机网络物联,物联网计算机网络安全及控制
  8. 北大才女笔记:这样学习线性回归和梯度下降(上篇)
  9. 谷歌高清卫星地图转西安80坐标系
  10. H5项目2-3手机邮箱导航