可视化希尔排序算法
Posted 多米学算法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可视化希尔排序算法相关的知识,希望对你有一定的参考价值。
前言
概念介绍
希尔排序是基于插入排序算法的一种更高效的改进版本
它是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越少,当增量减少至1时,整个文件恰被分成一组。此时算法便终止。
原理讲解
以[41 24 34 2 19 17]这个序列为例说明希尔排序算法的实现原理
未开始遍历时,此时效果如下图
由上面数组可知,该数组长度为6,我们人为的选择增量为gap=6/2=3,故将整个数组分为3个子数组(颜色相同为一组),分别为[41 2],[24 19],[34 17]。效果如下图
第一次遍历时(增量为3),我们分别对三个子数组进行插入排序,插入排序后3个子数组变为[2 41],[19 24],[17 34]。效果如下图
第二次遍历时(增量为1),我们对整个数组[2 19 17 41 24 34]进行插入排序,插入排序后效果如下图
至此,希尔排序原理讲解完毕。
时间复杂度
由希尔排序的过程可知,该算法的时间复杂度和增量有很大关系。如果增量为1,此时希尔排序就是插入排序;如果增量为Hibbard增量,此时希尔排序算法复杂度则明显有别于插入排序;
数据个数 | 增量为1时最大比较次数 |
---|---|
1 | 0 |
2 | 1 |
3 | 3 |
4 | 6 |
5 | 10 |
10 | 45 |
N | 1/2N(N-1) |
所以根据时间复杂度的概念
当增量为1时希尔排序算法的时间复杂度为O(N^2);
当增量为Hibbard增量时希尔排序算法的时间复杂度为O(N^3/2);(这个留着有兴趣的同学自行证明)
空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量。
由于希尔排序算法前后占用空间大小不变,由空间复杂度含义可知,该算法空间复杂度为O(1)
算法优缺点
优点:速度快;移动次数少
缺点:不稳定;增量选择不定,只能根据数据量靠经验选取
效果展示
说明
CSDN博客名称:多米学算法
本文仅仅展示该算法的效果,方便大家直观的理解。为了不增加大家理解的负担,故没有展示代码。如果您对代码感兴趣,可以进入我的CSDN免费下载源码
源码展示的效果可能您不满意,不过没关系,你可以在源码的基础上修改
如果您对可视化算法也感兴趣,赶紧和我一起学习吧
以上是关于可视化希尔排序算法的主要内容,如果未能解决你的问题,请参考以下文章