
希尔排序:分组插入的优化插入排序有个问题:如果一个很小的数在数组末尾,它得一步一步往前挪,每次只移一位,太慢了。希尔排序的思路是——先大步跳着排,再小步细调,让元素快速接近正确位置。一、基本思想希尔排序(Shell Sort)是插入排序的改进版:选定一个增量(gap),把数据按间隔分成若干组对每组做插入排序缩小增量,重复分组和排序当增量=1时,做最后一趟插入排序(此时数据已基本有序)初始:[38, 27, 43, 3, 9, 82, 10, 55] 增量gap=4时分组: 组1: 38, 9 → 排序后: 9, 38 组2: 27, 82 → 排序后: 27, 82 组3: 43, 10 → 排序后: 10, 43 组4: 3, 55 → 排序后: 3, 55 第一轮后:[9, 27, 10, 3, 38, 82, 43, 55] → 小的数已经大致挪到了前面! 增量gap=2时分组: 组1: 9, 10, 38, 43 → 已有序 组2: 27, 3, 82, 55 → 排序后: 3, 27, 55, 82 第二轮后:[9, 3, 10, 27, 38, 55, 43, 82] 增量gap=1(普通插入排序): 最终:[3, 9, 10, 27, 38, 43, 55, 82]二、增量序列增量的选择影响效率。常