可视化桶排序算法

前言

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

概念介绍

概念介绍

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

原理讲解

我们以[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个桶中
  • 缺点:如果待排序元素数量多时需要大量内存消耗

效果展示

在这里插入图片描述

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

在这里插入图片描述

说明

  • 在公众号中回复“算法源码”即可获取十大经典算法源码
  • 在公众号中回复“算法书籍”即可获取经典入门算法书籍
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值