【C# 排序】希尔排序
作者:互联网
背景
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。 希尔排序是非稳定排序算法。 该方法因D.L.Shell 于1959 年提出而得名。
定义
希尔排序︰先将待排序表分割成若干形如L[i,i + d,i + 2d..., i + kd]的“特殊”子表,对各个子表分别进行直接插入排序。缩小增量d,重复上述过程,直到d=1为止。 增量可以自己设定通常是增量序列=元素个数/2
使用要求
适用性:仅适用于顺序表,不适用于链表
基本有序或有序的顺序表,如下图:
时间复杂度
和增量序列d, de, d...的选择有关,目前无法用数学手段证明确切的时间复杂度
最坏时间复杂度为O(n2),当n在某个范围内时,可达O(n1.3)
图解排序过程
要排序的列表
(1)第一趟排序,增量序列=元素个数/2,然后对各个子表进行插入排序
第一趟排序完成的结果如下:
(2)在第二趟排序的在第一趟排序的结果上,继续排序
第二趟排序结果如下:
(3)第三趟排序,在第二趟排序的结果上,继续排序
排序后的结果如下:
算法
C# 代码
标签:第二趟,C#,插入排序,第一趟,希尔,增量,排序,复杂度 来源: https://www.cnblogs.com/cdaniu/p/16365641.html