希尔排序增量数组优化实现

希尔排序的增量优化是个挺有意思的思路,用的是一组逐渐缩小的增量数组dk,对顺序表做多轮插入排序。代码写法也不复杂,用一个for循环套住多组插排逻辑,每次用dk[m]当作当前轮的步长。响应也快,数据量大的时候比单纯插排强不少。

函数定义清晰,传入参数包括顺序表指针和增量数组,这种写法比较灵活,想用哪套增量都行。比如常见的{5, 3, 1}组合就挺适合练手。

你要是对排序底层逻辑感兴趣,推荐顺手看看希尔排序优化排序速度原理那篇,讲得蛮直白的。C 语言实现也有现成的版本,戳这里直接看源码。

另外,顺序表的结构如果还不熟,可以搭配着C++顺序表实现SqList.cpp看一下,对理解排序函数怎么传参数会更清楚。

如果你是 Python 党,那也别错过Python 中的希尔排序实现,写法上和 C 略有差异,但思路一样,换语言练练手挺合适。

提醒一句,写增量数组的时候别写错顺序,要从大到小才对哦~不然效果会打折扣。

ppt 文件大小:3.82MB