menu Secto白帽博客-专注于技术研究
C/C++排序算法-桶排序
565 浏览 | 2020-03-19 | 分类:C/C++,程序设计 | 标签:C/C++,C,算法,C++,排序

1. 什么是排序

排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。
引用自百度百科


对于一个无序队列:

1 4 3 2 5 7 6 

将它进行排序操作后(这里举a<b的例子):

1 2 3 4 5 6 7

2. 桶排序


所谓的桶排序,就是开一个数组a[n],设置初始值为0,把输入每个数对应数组++

例如:

5 3 5 2 8

这个队列中,首先出现的是5,那么就把a[5]++

第二个数是3,那么就把a[3]++

第三个数也是5,这里注意一下,a[5]++不变,于是a[5]=2

第四个数和第五个数处理以后如下图所示:

然后我们用一个for循环将其输出:

for(int i=1;i<=10;i++){
    if(a[i]!=0) cout<<i<<" ";
}

得到结果:

2 3 5 5 8

如果需要从大到小输出,则需要把for循环的判定条件设置为:

i=10;i>=1;i--

下面这个图直观地展现了桶排序的原理:

图片来源于本人恩师啊哈磊所著《啊哈算法》中

By:海螺HL
Time:2020/3/19

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!