排序算法之---希尔排序(一看你就懂滴)

一、什么叫“希尔排序”

希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。

重点度已经帮你们标黄啦啦,忘了什么叫插入排序咋搞? 没关系,点它直达

二、算法思想

    先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量 =1( < …<d2<d1),即所有记录放在同一组中进行直接插入排序为止。(百度官方解释,看不懂没关系,往下看你就懂了) 实质上是一种分组插入排序 一般的初次取序列的一半为增量,以后每次减半,直到增量为1。(这里说的是一般,因为这个算法的复杂度与增量序列的大小有关)

三、看动图演示

  1. 数组假设如下:
  2. 演示: Gap=1时,因为上面排完,数组部分已经有序,所以接下来的完整数组进行插序时效率很高。
  3. 解析说明:
第一次:Gap = 6 / 2= 3(数组长度除以2,这里用Gap来表示增量,取整来处理) 第二次:Gap = 3 /2 = 1(增量为1,相当于一个完整数组进行插入排序,但是此时数组部分有序程度已经很高了,所以插入速度很快)

四、上代码

Java老大哥:

Python新竞老大哥:

五、分享交流
  1. Java web从入门到精通电子书
  2. Python机器学习电子书
  3. Python400集(北京尚学堂)
  4. JavaScript项目案例、经典面试题
  5. Java300集(入门、精通)
  6. Java后端培训机构录集(同事培训内部提供)
经验分享 程序员 微信小程序 职场和发展