一句话明白排序算法之四——桶排序

核心思想:

把数据和数组元素下标相对应,数组元素为该下标数据的个数,直接输出下标就可以实现排序。


排序方法:

假如现在有10个同学考的分数依次为8, 6 ,8,10 ,5 ,7 ,6 ,9 ,4 ,5 分,对这10个同学的分数从小到大进行排序,最大的数为10,我们需要找11个桶,从a(0)到a(10),初始化a(0)到a(10)为0



现在处理每一个同学的分数, 第一个同学的分数为8,我们就将相对应的a(8)的值在原来的基础上加1,a(8)的值由原来的0变成了1,表示8分的同学有一个了。


第二个同学的分数为6分,我们就将相对应的a(6)的值在原来的基础上加1,a(6)的值由原来的0变成了1,表示6分的同学出现了1个


第三个同学的分数为8分,我们就将相对应的a(8)的值在原来的基础上加1,a(8)的值由原来的1变成了2,表示8分的同学出现了2个


 

依次从左到右看每个同学的分数,我们就将以分数为下标的相对应的数组元素的在原来的基础上加1,数组元素的值表示该分数的同学个数,最后的结果为:

   

一张图表示桶排序:




代码:

将输入的数为下标的数组的元素在原来的基础上加1

<span style="font-size:18px;">'初始化数组元素为0
  For i = 0 To 10
    a(i) = 0
  Next i
  '输入10个数,并且巧妙地把输入的数当做了数组下标,每输入一个数,就在以该数为下表的数组元素的值加1
  For j = 1 To 10
    m = Val(InputBox("请输入:", "数据输入"))
    a(m) = a(m) + 1</span>


从小到大输出10个数
<span style="font-size:18px;">'遍历数组下标从0到10
  For k = 0 To 10
    '数组元素的值不等于0.证明该数组元素的下标个数不为0,输出下标。
    If a(k) <> 0 Then
      't为数组元素的值,代表下标的个数,输出几个
      For t = 1 To a(k)
        Print k
      Next t
    End If
  Next k</span>


总结:

桶排序法是最简单,最快的一种排序方法,缺点是占用空间比较大。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗琪小姐姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值