使用C++实现希尔排序算法

希尔排序是插入排序的改进版,又称“缩小增量排序”,通过分组插入排序并逐步缩小增量实现高效排序。基本思路:选定初始增量`gap`(如数组长度的一半),按`gap`分组(子序列元素间隔`gap`),对各组子序列插入排序;重复缩小`gap`(通常减半),直至`gap=1`完成整体排序。 核心原理:大`gap`时分组减少移动次数,小`gap`时数组已部分有序,大幅降低最终插入排序的移动量。以数组`[12,34,54,2,3]`为例,初始`gap=2`分组排序后数组渐趋有序,再`gap=1`完成最终排序。 代码通过三层循环实现:外层控制`gap`,中层遍历分组,内层移动元素。时间复杂度平均`O(n^1.3)`(依赖增量),最坏`O(n²)`,空间复杂度`O(1)`,不稳定。希尔排序通过分组优化插入排序,适用于较大数组,核心逻辑为“分组→排序→缩小增量→最终排序”。

阅读全文
使用Python实现希尔排序算法

希尔排序是插入排序的改进版,通过分组缩小元素间隔,先“粗排”再“精排”提升效率。核心是选择初始增量(如数组长度的一半),将数组分为若干组,组内元素间隔为增量,对每组用插入排序;随后增量减半,重复分组排序,直至增量为1时完成“精排”。 其关键逻辑是通过分组减少元素移动次数:初始分组大(元素间隔大),先让数组基本有序;逐步缩小增量,最终以插入排序收尾。时间复杂度平均为O(n log n),最坏O(n²),空间复杂度O(1),适用于中等规模、元素分布不均的数组,是原地排序的高效算法。

阅读全文