软设之希尔排序

假设有n个元素,先取一个小于n的整数d1作为一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组中进行直接插入排序;然后,取第二个增量d2<d1重复上诉的分组和排序,直到所取得增量dt=1,也就是所有记录放在一个同一个组进行插入排序。

比如说有数组57 68 59 52 72 28 96 33 24 19进行希尔排序。

d1=10/2=5

第1个第6个为一组,第2个第7个为一组,第3个第8个为一组,第4个第9个为一组,第5个第10个为一组,进行插入排序

排序如下

28 68 33 24 19 57 96 59 52 72

d2=5/2取奇数为3

再次分组,排序如下

24 19 33 28 59 52 72 68 57 96

d3=3/2=1

排序如下

19 24 28 33 52 59 68 72 57 96

最后对整个数组进行插入排序就可以了。这时候整个数组排列相对有序了,只要进行很少插入排序就可以完成排序了。

希尔排序是一种不稳定的排序方法,时间复杂度是O(n^1.3),空间复杂度是O(1)

相关推荐
RainCity7 小时前
Java Swing 自定义组件库分享(二)
java·笔记
Rnan-prince7 小时前
Count-Min Sketch:海量数据频率统计的“轻量级计数器“
python·算法
王老师青少年编程7 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【排序贪心】:加工生产调度
c++·算法·贪心·csp·信奥赛·排序贪心·加工生产调度
皮肤科大白7 小时前
X-AnyLabeling +9.5 G Medsam3全流程接入笔记
pytorch·笔记·深度学习
三毛的二哥7 小时前
BEV:MapTR
人工智能·算法·计算机视觉·3d
小菜鸡桃蛋狗7 小时前
C++——vector
开发语言·c++·算法
黎阳之光7 小时前
黎阳之光:以视频孪生硬核实力,抢抓交通科技新机遇
大数据·人工智能·算法·安全·数字孪生
噜噜噜阿鲁~7 小时前
python学习笔记 | 7.2、高级特性-迭代
笔记·python·学习
WL_Aurora7 小时前
2026天梯赛题解
python·算法
Engineer邓祥浩7 小时前
知识点1 时间复杂度、空间复杂度
java·数据结构·算法