希尔排序增量数组优化实现
希尔排序的增量优化是个挺有意思的思路,用的是一组逐渐缩小的增量数组dk
,对顺序表做多轮插入排序。代码写法也不复杂,用一个for
循环套住多组插排逻辑,每次用dk[m]
当作当前轮的步长。响应也快,数据量大的时候比单纯插排强不少。
函数定义清晰,传入参数包括顺序表指针和增量数组,这种写法比较灵活,想用哪套增量都行。比如常见的{5, 3, 1}
组合就挺适合练手。
你要是对排序底层逻辑感兴趣,推荐顺手看看希尔排序优化排序速度原理那篇,讲得蛮直白的。C 语言实现也有现成的版本,戳这里直接看源码。
另外,顺序表的结构如果还不熟,可以搭配着C++顺序表实现和SqList.cpp看一下,对理解排序函数怎么传参数会更清楚。
如果你是 Python 党,那也别错过Python 中的希尔排序实现,写法上和 C 略有差异,但思路一样,换语言练练手挺合适。
提醒一句,写增量数组的时候别写错顺序,要从大到小才对哦~不然效果会打折扣。
3.82MB
文件大小:
评论区