可视化桶排序算法

前言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

概念介绍

概念介绍

  • 桶排序是计数排序的升级版
  • 它利用函数的映射关系,将待排序元素分到有限的桶里,然后桶内元素再进行排序(可能是别的排序算法),最后将各个桶内元素输出得到一个有序数列

原理讲解

我们以[12 8 3 24 21 6 11 15 22 9]这个序列为例说明桶排序算法的实现原理

  1. 当未开始排序时,此时效果如下图
    在这里插入图片描述

  2. 首先我们新建三个桶,桶1放置0-9范围内的数据,桶2放置10-19范围内的数据,桶3放置20-29范围内的数据,此时效果如下图

    在这里插入图片描述

  3. 开始遍历待排序数列,将第一个元素12放到桶2中,此时效果如下图

    在这里插入图片描述

  4. 继续遍历待排序数列,将第二个元素8放到桶1中,此时效果如下图

    在这里插入图片描述

  5. 继续遍历待排序数列,将第三个元素3放到桶1中,此时效果如下图

    在这里插入图片描述

  6. 继续遍历待排序数列,将第四个元素24放到桶3中,此时效果如下图

    在这里插入图片描述

  7. 继续遍历待排序数列,将第五个元素21放到桶3中,此时效果如下图

    在这里插入图片描述

  8. 继续遍历待排序数列,将第六个元素6放到桶1中,此时效果如下图

    在这里插入图片描述

  9. 继续遍历待排序数列,将第七个元素11放到桶2中,此时效果如下图

    在这里插入图片描述

  10. 继续遍历待排序数列,将第八个元素15放到桶2中,此时效果如下图

    在这里插入图片描述

  11. 继续遍历待排序数列,将第九个元素22放到桶3中,此时效果如下图

    在这里插入图片描述

  12. 继续遍历待排序数列,将第十个元素9放到桶1中,此时效果如下图

    在这里插入图片描述

  13. 至此,所有元素均放到桶中,此时效果如下图

    在这里插入图片描述

  14. 接下来进行各个桶中数列自排序(排序算法可以任意选择)。首先桶1中数列自排序,此时排序完效果如下图

    在这里插入图片描述

  15. 接着桶2中数列自排序,此时排序完效果如下图

    在这里插入图片描述

  16. 最后桶3中数列自排序,此时排序完效果如下图

    在这里插入图片描述

  17. 至此,各个桶中元素自排序完成,此时效果如下图

    在这里插入图片描述

  18. 将桶中元素按顺序输出,得到一个排序后的数列,此时效果如下图

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

时间复杂度

  • 桶排序的最好时间复杂度为O(N)

空间复杂度

  • 桶排序的空间复杂度为O(N+M);N为待排序元素个数,M为桶的个数

算法优缺点

  • 优点:速度快、稳定

    • 在额外空间充足的情况下,尽量增大桶的数量
    • 使用映射函数能够将输入的N个数据均匀的分配到K个桶中

  • 缺点:如果待排序元素数量多时需要大量内存消耗

效果展示

在这里插入图片描述

更多算法学习请关注我的公众号

在这里插入图片描述

说明

  • 在公众号中回复“算法源码”即可获取十大经典算法源码
  • 在公众号中回复“算法书籍”即可获取经典入门算法书籍

以上是 可视化桶排序算法 的全部内容, 来源链接: utcz.com/a/26392.html

回到顶部