C++计数排序去重并升序输出(0~100整数范围)
根据题目要求,这是一个**去重后排序**的问题,且数据范围明确为0~100的整数,非常适合使用**计数排序**思路解决。下面给出C++实现。 ## 🧠 解题思路 - 利用 `cnt[101]` 数组记录每个数字出现的次数(因为范围是0~100)。 - 输入时,对每个数字 `x` 执行 `cnt[x]++`。 - 输出时,从0到100遍历 `cnt`,如果 `cnt[i] > 0` 则输出 `i`,即可实现去重且按升序输出。 ## 💻 完整代码 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; int cnt[101] = {0}; // 0~100 共101个可能取值 for (int i = 0; i < n; i++) { int x; cin >> x; cnt[x]++; } bool first = true; // 控制空格格式 for (int i = 0; i <= 100; i++) { if (cnt[i] > 0) { if (!first) cout << " "; cout << i; first = false; } } cout << endl; return 0; } ``` ## ⚙️ 关键点说明 - **`cnt[101] = {0}`**:初始化所有元素为0,数组下标即代表数字本身。 - **遍历范围**:因为数字范围固定0~100,直接遍历整个数组即可,无需额外排序。 - **空格处理**:使用 `bool first` 确保输出格式正确,不产生多余空格。 - **时间复杂度**:`O(n + 101)`,输入n次,遍历固定101次,高效且极快。 ## 🔧 开发建议 1. **边界考虑**:题目中n>1,且数字为0~100整数,因此 `cnt` 大小设为101是安全的,无需动态分配。 2. **代码可扩展性**:若数字范围变大(如0~10^6),则此方法不再适用,应考虑使用 `set` 或 `unordered_set` 加排序。 3. **内存优化**:当前使用固定数组,内存极小,完全满足题目100MB限制。 4. **输入输出优化**:对于大规模输入,可加入 `ios::sync_with_stdio(false); cin.tie(0);` 提升速度,但本题n<1000无需担心。 ######[AI写代码神器 | 574点数解答 | 2026-08-21 21:22:44]
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)156
- 补全代码:将数组所有元素赋值为 100 并输出(字节豆包 | 164点数解答 | 2025-11-01 19:14:57)196
- Python 实现图像模糊化:输入像素值,输出处理后图像(附代码及详细解释)(字节豆包 | 555点数解答 | 2025-12-09 12:22:26)169
- C++实现二进制转八进制及旋律类型判断(字节豆包 | 629点数解答 | 2026-03-21 19:50:41)85
- C++实现图像模糊化处理:含代码、解释与复杂度分析(字节豆包 | 670点数解答 | 2025-11-10 18:55:33)204
- C++实现图像像素灰度值模糊化处理:输入输出全解析(字节豆包 | 655点数解答 | 2025-12-01 14:24:01)170
- C++ 实现旋律类型判断:根据 7 个音符顺序输出升序、降序或混合(字节豆包 | 582点数解答 | 2026-03-21 19:41:16)76
- C++判断7音符旋律升降序类型实现及要点解析(DeepSeek | 846点数解答 | 2026-08-07 19:12:43)21
- 神秘数据背后的信息解读:样例输入与输出探秘(字节豆包 | 28点数解答 | 2024-12-12 11:56:59)476
- C 语言:按特定顺序读入并输出浮点数、整数和字符(字节豆包 | 106点数解答 | 2024-09-26 00:32:40)418
- C++ 混合类型数据格式化输入输出:按指定顺序输出并保留两位小数(字节豆包 | 187点数解答 | 2024-10-16 14:31:08)475
- C语言:实现混合类型数据格式化输入输出,代码超简单!(字节豆包 | 159点数解答 | 2024-10-16 14:32:18)467