希尔排序( Shell Sort )使用不同的步长序列( gaps )
希尔排序的定义
希尔排序(Shellsort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
说这花里胡哨的没有用
希尔排序事实上就是把插入排序的逐个遍历并排序,改成了逐间隔遍历并排序,并且使得间隔值不断变小。当间隔为1的时候,这是希尔排序的最后一次遍历插入排序。希尔排序的优化实际上就是寻找实际有效的数据间隔。这些间隔实际上是通过数学的分析来确定的。
关于步长序列(gaps)
步长序列有很多,但是不管怎样. 每个步长序列中的元素之间,两两是互质的。这也就是,为什么,上课时,老师讲的例子都是奇数开始的原因。
关于基本代码
基本的希尔排序算法遍地都是,我就不重复了。
关于希尔排序的优化代码
// 这是Tokuda序列(逆序)
// 如果使用顺序的时候,需要改变最外层For
long long gaps[30] = {29414774973,13073233321,5810325920,2582367076,1147718700,
4510097200,226709866,100759940,44782196