桶排序(注意去重,计数)
2026-09-16 19:35:39
发布于:浙江
2阅读
0回复
0点赞
核心思路
1.去重与存储:创建一个长度为 1001 的整型数组 bucket,初始化为 0。每读入一个数字 x,就将 bucket[x] 标记为 1(或 x 本身)。因为数组下标是唯一的,重复的数字只会覆盖同一个位置,从而天然实现去重。
2.排序:由于数组下标是从 0 到 1000 自然递增的,当我们从小到大遍历这个 bucket 数组时,输出的数字自然就是从小到大排序好的。
3.统计个数:在标记过程中或遍历输出前,统计有多少个位置被标记过,即为不相同数字的个数
M。
#include <iostream>
using namespace std;
int main() {
int n, x, m = 0;
int b[1001] = {0};
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> x;
if (b[x] == 0) {
b[x] = 1;
m++;
}
}
cout << m << endl;
for (int i = 1; i <= 1000; ++i) {
if (b[i] == 1) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
保证AC
这里空空如也


有帮助,赞一个