桶排序(Bucket sort)
程序代码
#include <bits/stdc++.h>
using namespace std;
//数组下标表示数值
//数组内容表示该数是否存在/存在几次
int main() {
int a[101], count = 0;
memset(a, 0, sizeof(a));
cin >> count;
for (int i = 0; i < count; i++) {
int t;
cin >> t;
a[t]++;
}
for (int i = 0; i < 101; i++) {
for (int j = 0; j < a[i]; j++) {
cout << i << " ";
}
}
return 0;
}
代码解释
上述代码实现排序的数据范围为0-101之间的所有整数
a[101] //数组下标表示数值,数组内容表示该数是否存在/存在几次
count //记录输入数据的个数
在输出的过程中,需要检查所有数值0-100是否存在,for(int i=0;i<101;i++),当数值出项多次时,需要重复打印出来,所以使用内层循环。
时间复杂度可以简单理解为O(n)
深入理解
详见百度百科:桶排序_百度百科