什么是桶?
就是一个用来记录数据出现次数的数组
算法思路:
1.遍历待排序序列,找到桶的上界,并且对桶进行赋值
2.对桶进行遍历,反向给待排序数据赋值,更新成有序序列
##
代码实现
#include <iostream> using namespace std; const int N = 1e5 + 5; int nums[N], bucket[N]; void BucketSort(int nums[]) { int bkt_max = INT_MIN; for (int i = 1; i <=nums[0];i++) {//遍历数组 if (bkt_max<nums[i]) { bkt_max = nums[i]; //找到最大值最为桶的上界 } bucket[nums[i]]++;//创建桶,给桶赋值 } int k = 1; for (int i = 0; i<=bkt_max;i++) { while (bucket[i]>0) { nums[k++] = i; bucket[i]--; } } } int main() { cin >> nums[0]; for (int i = 1; i <= nums[0];i++) { cin >> nums[i]; } BucketSort(nums); for (int i = 1; i <= nums[0];i++) { cout << nums[i] << ' '; } return 0; }