助力快速掌握希尔排序 使有限时间 具备无限可能 |
我们的初衷是将一种简单的生活方式带给世人 为初学者节省宝贵的时间,避免采坑! |
Chinar 教程效果:
1
Intro —— 简介
百度百科:希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort)
是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名
也就是说希尔排序是一种特殊的插入排序
请大家先了解一下插入排序,这样有助于理解希尔排序:插入排序
2
Realize —— 实现
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序
随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个数列恰被分成一组,算法便终止
请大家先看代码,难点会在代码后面列出
static void ShellSort(int[] data)
{
int index;
int len = data.Length;
int perIndex = data.Length/2;
while (perIndex>0)
{
for (int i = perIndex; i < len; i++)
{
index = i - perIndex;
int temp = data[i];
while (index >= 0 && data[index] > temp)
{
data[index + perIndex] = data[index];
index -= perIndex;
}
data[index + perIndex] = temp;
}
perIndex /= 2;
}
}
Chinar
总结:对于新手来讲,希尔排序会有哪几个难点:
- 增量的意义:
表示当前数与间隔增量个数的数作比较,一般默认为数列长度的1/2
- 增量每次缩减一半的意义:
相当于将数列分组,对每组进行插入排序,直到每组数据个数为1,这时排序完成
至此:您已完美征服了 希尔排序
支持
May Be —— 开发者,总有一天要做的事!
Chinar 提供一站式《零》基础教程 使有限时间 具备无限可能! |
Chinar 免费服务器、建站教程全攻略!( Chinar Blog )
![](https://i-blog.csdnimg.cn/blog_migrate/d2702ccd2c6f465492f4a8db351a76e1.png)
![Chinar交流群 Chinar](http://pub.idqqimg.com/wpa/images/group.png)
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址