ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【C# 排序】希尔排序

2022-06-11 18:34:14  阅读:180  来源: 互联网

标签:第二趟 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有