当前位置:
首页 > 编程开发 > Python基础教程 >
-
python基础教程之希尔排序
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
一.思想
希尔排序是一种分组插入排序算法。
- 首先取一个整数d1=n/2,将元素分为d1个为一组,每组相邻量元素之间距离为d1,两组数据一一进行对比按大小,从新分配两组
如[1,3,0,2]
第一次排序后变成[0,2,1,3]
- 取第二个整数d2=d1/2,重复上述分组排序过程,直到di=1,即所有元素在同一组内进行直接插入排序。
按上面那个简单例子走第二次排序为
[0,2,1,3]
按间隔1进行对比第一次然后依次变成
0与2比,0比2小顺序不变
[0,2,1,3]
2与1比,1比2小1去前面
[0,1,2,3]
依次类推...全部走完就是排好了
[0,1,2,3]
二.代码
这是网上找的精简后的代码,我自己撸的和屎一样很乱
def shell_sort(li):
gap = len(li)//2
while gap>0:
for i in range(gap,len(li)):
tmp =li[i]
j = i - gap
while j >=0 and tmp <li[j]:
li[j+gap]=li[j]
j -=gap
li[j+gap]=tmp
gap /= 2
栏目列表
最新更新
python基础-匿名函数和内置函数
希尔排序
什么是回调,回调在编程中的含义
python lanbda匿名函数(20)
常用的排序算法
odoo10实现单点登陆绕过登陆集成页面
python基础-生成器
生成器
生成器以及面向过程编程
Django查询数据库返回字典dict数据
.Net Standard(.Net Core)实现获取配置信息
Linux PXE + Kickstart 自动装机
Shell 编程 基础
Shell 编程 条件语句
CentOS8-网卡配置及详解
Linux中LVM逻辑卷管理
1.数码相框-相框框架分析(1)
Ubuntu armhf 版本国内源
Linux中raid磁盘阵列
搭建简易网站
mysql 安装了最新版本8.x版本后的报错:
Mysql空间数据&空间索引(spatial)
如何远程连接SQL Server数据库的图文教程
复制SqlServer数据库的方法
搜索sql语句
sql中返回参数的值
sql中生成查询的模糊匹配字符串
数据定义功能
数据操作功能
将Session值储存于SQL Server中