可视化桶排序算法
前言
概念介绍
概念介绍
- 桶排序是计数排序的升级版
- 它利用函数的映射关系,将待排序元素分到有限的桶里,然后桶内元素再进行排序(可能是别的排序算法),最后将各个桶内元素输出得到一个有序数列
原理讲解
我们以[12 8 3 24 21 6 11 15 22 9]这个序列为例说明桶排序算法的实现原理
- 当未开始排序时,此时效果如下图
- 首先我们新建三个桶,桶1放置0-9范围内的数据,桶2放置10-19范围内的数据,桶3放置20-29范围内的数据,此时效果如下图
- 开始遍历待排序数列,将第一个元素12放到桶2中,此时效果如下图
- 继续遍历待排序数列,将第二个元素8放到桶1中,此时效果如下图
- 继续遍历待排序数列,将第三个元素3放到桶1中,此时效果如下图
- 继续遍历待排序数列,将第四个元素24放到桶3中,此时效果如下图
- 继续遍历待排序数列,将第五个元素21放到桶3中,此时效果如下图
- 继续遍历待排序数列,将第六个元素6放到桶1中,此时效果如下图
- 继续遍历待排序数列,将第七个元素11放到桶2中,此时效果如下图
- 继续遍历待排序数列,将第八个元素15放到桶2中,此时效果如下图
- 继续遍历待排序数列,将第九个元素22放到桶3中,此时效果如下图
- 继续遍历待排序数列,将第十个元素9放到桶1中,此时效果如下图
- 至此,所有元素均放到桶中,此时效果如下图
- 接下来进行各个桶中数列自排序(排序算法可以任意选择)。首先桶1中数列自排序,此时排序完效果如下图
- 接着桶2中数列自排序,此时排序完效果如下图
- 最后桶3中数列自排序,此时排序完效果如下图
- 至此,各个桶中元素自排序完成,此时效果如下图
- 将桶中元素按顺序输出,得到一个排序后的数列,此时效果如下图
时间复杂度
- 桶排序的最好时间复杂度为O(N)
空间复杂度
- 桶排序的空间复杂度为O(N+M);N为待排序元素个数,M为桶的个数
算法优缺点
- 优点:速度快、稳定
- 在额外空间充足的情况下,尽量增大桶的数量
- 使用映射函数能够将输入的N个数据均匀的分配到K个桶中
- 缺点:如果待排序元素数量多时需要大量内存消耗
效果展示
更多算法学习请关注我的公众号
说明
- 在公众号中回复“算法源码”即可获取十大经典算法源码
- 在公众号中回复“算法书籍”即可获取经典入门算法书籍
以上是 可视化桶排序算法 的全部内容, 来源链接: utcz.com/a/26392.html