python 希尔排序
希尔排序,又称缩小增量排序,其实就是改进版的插入排序
当待排序列基本有序的情况下,插入算法的效率非常高,那么希尔排序就是利用这个特点对插入算法进行了改造升级
希尔排序的关键是对待排序进行分组,这个分组并不是真的对序列进行了拆分,而仅仅是虚拟的分组,增量是分组时所使用的步长
如:
#待排序数组 4,1,67,34,12,35,14,8,6,19
第一轮希尔排序
虚拟分组,组数为(n/2),增量是(n/2),即是从第0个元素开始,每个元素和自己距离n/2(n是数组的长度)的元素分为一组
4 35 1 14 67 8 34 6 12 19
然后对各组内的元素进行插值排序,得到
4, 1, 8, 6, 12, 35, 14, 67, 34, 19
第二轮希尔排序
上一轮排序,组数n/2,这次是(n/2)/2,增量是(n/2)/2
4 8 12 14 34
1 6 35 67 19
分别插值排序后
4 8 12 14 34
1 6 19 35 67
排序后的结果为:
4, 1, 8, 6, 12, 19, 14, 35, 34, 67
代码如下:
lst = [4,1,67,34,12,35,14,8,6,19] length = len(lst) step = length//2 while step > 0: for i in range(step): # 插入排序 for j in range(i+step, length, step): if lst[j] < lst[j-step]: tmp = lst[j] k = j-step while k >= 0 and lst[k] > tmp: lst[k+step] = lst[k] k -= step lst[k+step] = tmp step //= 2 #缩小增量 print lst
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人