桶排序

定义

  • 将数组元素的范围划分为几个子范围(桶子),再对每个桶子里所有元素进行排序,最后合并桶子。
算法模型
  • 根据数组中元素的范围,来合理划分筒子个数
  • 将各个数组元素放入桶子里
  • 对每个桶子里元素进行排序
  • 合并桶子里的数据
伪代码
Bucket-Sort(A)
    let B[0..n-1] be a new array
    n = A.lenghtS
    for i = 0 to n - 1
        make B[i] an empty list
    for i = 1 to n 
        insert A[i] into list B[nA[i]]
    for i = 0 to n - 1
        sort list B[i] with insertion sort
    concatenate the lists B[0], B[1]....B[n - 1] togather in order
例子
  • 数组 array = [29, 25, 3, 49, 9, 37, 21, 43];最大数是49.划分五个范围
    0~9、10~19、20~29、30~39、40~49,将元素放入桶子
    这里写图片描述

  • 对桶子里元素进行排序这里选择插入排序。(放入的同是可进行插入)最后,将各个桶中的数据有序的合并起来。

这里写图片描述

复杂度分析
  • 很显然桶排序的时间复杂度,取决与对各个桶之间数据进行排序的 时间复杂度,因为 其它部分的时间复杂度都为O(n);很显然,桶划分的越小,各个桶之间的数据越少,排 序所用的时间也会越少。但相应的空间消耗就会增大。

博客参考文章一.

博客参考文章二。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值