玖叶教程网

前端编程开发入门

改进后的直接插入排序:希尔排序,快了100多倍?

喜欢互联网技术的同学,一定要关注我哦!

上一次,讲述了直接插入排序,并且使用JAVA语言对其进行实现,

传送门:《图解直接插入排序算法,你真的了解它了吗?


这一次将讲述一下,直接插入排序的改进版,那就是希尔排序

希尔排序的基本思想

先将整个待排序记录系列分割成若干个子序列,在子序列内分别进行直接插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序。

图解希尔排序

具体排序过程:

如下面10个数,取增量d=10/2=5,将所有相距为5的记录构成一组,从而将整个待排序的记录序列分割成5个子序列,如下图的5种不同颜色分别代表5个不同的分组,分别是【0,5】,【9,3】,【6,4】【7,2】,【5,1】,然后对这几个分组执行直接插入排序,然后再缩小增量d,取d=d/2的下限为2,变成第二行的两种颜色的分组,然后在执行直接插入排序,直到d=1,然后在执行一次直接插入排序。

执行完3次希尔排序后,就可以排好序了!

JAVA实现希尔排序算法

测试结果

为了方便测试,采用了随机生成数据的数组

可以看到测试结果符合我们的预期

与直接插入排序性能对比

结果令我们大吃一惊,排序100000个数,希尔排序比直接插入排序快了100倍

觉得有帮助的同学,记得点赞,转发,收藏哦!

之后会有更多精彩内容哦,一定要关注一下我哦!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言