桶可以用作统计一篇文章中每个不同字符有多少个等问题,也能排序。
桶排序
给你一个数列,请你排序。
数列:
1 5 2 2 3 4 1
我们把每个数放到桶的相应下表,比如1
就要放到buck[1]
,2
就放到buck[2]
。上面哪个数据桶数组如下列所示,第一行是同数组的下标,第二行是其内容。
$$\begin{matrix} bucket[]&1&2&3&4&5&6\\value&2&2&1&1&1&0 \end{matrix}$$
然后输出的时候就从下标0
开始,里面是几就输出几个。
int buck[100], maxval = 0;
for (int i = 1; i <= n; i ++)
{
int x;
scanf ("%d", &x);//输入
buck[x] ++;//进入桶
maxval = max(maxval, x);//统计最大值
}
for (int i = 1; i < maxval; i ++)
{
for (int j = 1; j <= buck[i]; j ++)//循环输出
{
cout << i << " ";
}
}