您的位置:首页 > 其它

排序算法之桶排序

2016-07-26 11:37 204 查看
排序算法之桶排序
桶排序是速度最快的排序啦,简单的说,就是把数据分组,放在一个个预先准备好的有序的桶里,然后输出桶的下角标。
在桶排序中,速度和空间似乎是矛盾的,如果需要排序的数字非常的多,桶排序无疑是最快的,但是由于需要准备好多桶,储存空间的损耗也是非常大的。
所以桶排序适用在需要排序的数据大致相同,而且相对集中。
废话不说啦,我们开始总结桶排序的思路咯。
假如我们有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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: