排序算法之桶排序

排序算法之桶排序

桶排序是速度最快的排序啦,简单的说,就是把数据分组,放在一个个预先准备好的有序的桶里,然后输出桶的下角标。

在桶排序中,速度和空间似乎是矛盾的,如果需要排序的数字非常的多,桶排序无疑是最快的,但是由于需要准备好多桶,储存空间的损耗也是非常大的。

所以桶排序适用在需要排序的数据大致相同,而且相对集中。

废话不说啦,我们开始总结桶排序的思路咯。

假如我们有a(1)~a(10)十个桶,我们有五个数字需要排序:                                                                                                                                                                                                                                                            

假设这五个数字分别是8、5 、6、3、6

桶排序最为突破性的思想是变排序为不排序,选择排序、冒泡排序等其他排序似乎都需要比较和交换,但是桶排序不需要。你只是需要把需要排序的数据放在已经有序的桶里,输出下角标。就已经完成排序咯。

如上图所示,我们把数据“3”放进桶“a(3)”里,把数据“5”放在同“a(5)”里,因为数据“6”有两个,所以需要在桶“a(6)”放“1+1”两个,如下类似。这样我们打印出桶内有数据的桶的下角标就得到了3 、 5、 6 、6、8。

我们用VB实现这个过程(仅供参考):

    Dim a(10) As Integer   ‘ 定义数据类型

   

    For i = 1 To 5     

      m = Val(InputBox("请输入""输入框", 0))      '依次输入5个值         

      a(m)= a(m) + 1 '桶的初始值为0,增加一个数,a(m)内的值增加1

   Next

   

    For j = 0 To 10     '遍历每一个桶,判断桶内有无元素

        If a(j) <> 0 Then           '如果桶内有元素

            For t = 1 To a(j)       '依次输出桶内元素

                Print j         '打印桶的下角标

            Next

        End If

    Next 

是的,桶排序就就是这么简单,但是仅仅是知道和理解还是不行,我们要多练习,才能切实的掌握它。

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

 

 

1

 

1

2

 

1

 

 


评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值