可视化插入排序算法

Posted 多米学算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可视化插入排序算法相关的知识,希望对你有一定的参考价值。

前言

可视化插入排序算法

可视化插入排序算法

可视化插入排序算法

可视化插入排序算法

可视化插入排序算法

原理讲解

  • 以41 34 19 17 2这个序列为例说明插入排序的实现原理

  1. 未开始遍历时,此时效果如下图

    可视化插入排序算法

  2. 第一次遍历时,我们取出第一个元素41,并假定该元素已经有序。此时有序部分元素为41,无序部分元素为34 19 17 2。效果如下图

    可视化插入排序算法

  3. 第二次遍历时,我们取出无序部分第一个元素34,检查有序部分元素41。效果如下图

    可视化插入排序算法

    此时34小于41,故将元素34插到元素41的前面。此时有序部分元素为34 41,无序部分元素为19 17 2。效果如下图

    可视化插入排序算法

  4. 第三次遍历时,我们取出无序部分第一个元素19,检查有序部分元素34 41。效果如下图

    可视化插入排序算法

    此时19小于41,也小于34,故将元素19插到元素34的前面。此时有序部分元素为19 34 41,无序部分元素为17 2。效果如下图

    可视化插入排序算法

  5. 第四次遍历时,我们取出无序部分第一个元素17,检查有序部分元素19 34 41。效果如下图

    可视化插入排序算法

    此时17小于41,小于34,也小于19,故将元素17插到元素19的前面。此时有序部分元素为17 19 34 41,无序部分元素为2。效果如下图

    可视化插入排序算法

  6. 第五次遍历时,我们取出无序部分第一个元素2,检查有序部分元素17 19 34 41。效果如下图

    可视化插入排序算法

    此时2小于41,小于34,小于19,也小于17,故将元素2插到元素17的前面。此时有序部分元素为2 17 19 34 41,无序部分元素为空。效果如下图

  7. 此时整个数组插入排序完毕

时间复杂度

  • 插入排序算法的时间复杂度是和算法中相邻两个数据的比较次数和移动次数成正比的。具体如下:

数据个数 最大比较次数 最大移动次数
1 0 0
2 1 1
3 3 3
4 6 6
5 10 10
10 45 45
N 1/2N(N-1) 1/2N(N-1)

所以根据时间复杂度的概念,冒泡算法的时间复杂度为O(N^2)

空间复杂度

  • 是对一个算法在运行过程中临时占用存储空间大小的度量。

  • 由于插入排序算法前后占用空间大小不变,由空间复杂度含义可知,该算法空间复杂度为O(1)

算法优缺点

  • 优点:稳定,快速

  • 缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候

效果展示

说明

  • 本文仅仅展示该算法的效果,方便大家直观的理解。为了不增加大家理解的负担,故没有展示代码。如果您对代码感兴趣,可以进入我的CSDN免费下载源码。

  • 源码展示的效果可能您不满意,不过没关系,你可以在源码的基础上修改

  • 如果您对可视化算法也感兴趣,赶紧和我一起学习吧


以上是关于可视化插入排序算法的主要内容,如果未能解决你的问题,请参考以下文章

学习数据结构笔记====>不同的排序算法(Sort Algorithm)[冒泡,选择,插入,快速,希尔,基数,归并]

可视化希尔排序算法

算法系列二希尔排序

各种排序算法的可视化展现

排序算法之插入排序(直接插入排序折半插入排序希尔排序)

matlab 希尔算法可视化