编程语言
首页 > 编程语言> > 【C# 排序】希尔排序

【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