C++ 去除重复数字并排序的实现与开发建议
### 🍃思路分析 根据提示,我们可以使用计数排序的思想来解决这个问题。计数排序是一种非比较排序算法,适用于数据范围较小的情况。在本题中,数字范围是从 0 到 100,非常适合使用计数排序。我们创建一个长度为 101 的数组 `count`,其中 `count[i]` 表示数字 `i` 出现的次数。遍历输入的数字,统计每个数字出现的次数,然后遍历 `count` 数组,若 `count[i]` 不为 0,则说明数字 `i` 出现过,将其输出。 ### 💻代码实现 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 初始化计数数组,用于记录每个数字出现的次数 int count[101] = {0}; // 读取输入的数字,并统计每个数字出现的次数 for (int i = 0; i < n; i++) { int num; cin >> num; count[num]++; } // 标记是否是第一个输出的数字 bool first = true; // 遍历计数数组,输出出现过的数字 for (int i = 0; i <= 100; i++) { if (count[i] > 0) { if (!first) { cout << " "; } cout << i; first = false; } } cout << endl; return 0; } ``` ### ⚙️代码解释 1. **输入处理**:首先读取输入的数字数量 `n`,然后创建一个长度为 101 的数组 `count`,用于记录每个数字出现的次数,初始值都为 0。 2. **计数统计**:使用 `for` 循环读取 `n` 个数字,并将对应的 `count` 数组元素加 1。 3. **输出结果**:遍历 `count` 数组,若 `count[i]` 大于 0,则说明数字 `i` 出现过,将其输出。为了避免输出多余的空格,使用 `first` 变量标记是否是第一个输出的数字。 ### 🚀复杂度分析 - **时间复杂度**:$O(n + k)$,其中 $n$ 是输入数字的数量,$k$ 是数字的范围(本题中 $k = 101$)。 - **空间复杂度**:$O(k)$,主要用于存储计数数组。 ### 🌟开发建议 - **输入验证**:可以添加输入验证,确保输入的数字在 0 到 100 的范围内。 - **错误处理**:可以处理输入异常,如输入的 `n` 不在 1 到 999 的范围内。 - **扩展性**:如果数字范围发生变化,可以修改计数数组的长度。 ### 📚学习资源 - [C++ 官方文档](https://en.cppreference.com/w/) - 《C++ Primer》:经典的 C++ 学习书籍,适合初学者和有一定基础的开发者。 ######[AI写代码神器 | 740点数解答 | 2026-03-27 19:23:37]
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)42
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)46
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)346
- C++实现计算字符矩阵中十字图形个数(字节豆包 | 333点数解答 | 2026-03-14 19:46:38)22
- C++实现矩阵中十字图形个数的计算(字节豆包 | 847点数解答 | 2026-03-14 20:19:15)22
- Python:用正则表达式从含多种字符的字符串中提取英文、数字和中文单词(GPT | 522点数解答 | 2024-05-31 19:05:27)317
- Python:用正则表达式结合 split 思路提取一行字符串中的英文、数字和中文单词 (GPT | 399点数解答 | 2024-05-31 19:07:31)313
- 繁体字编码代码修改:人物名字合法性验证函数转简体版(字节豆包 | 325点数解答 | 2024-10-21 18:57:01)287
- 计算区间 n 到 m 中数字 x 出现次数的 Python 实现与详解(字节豆包 | 289点数解答 | 2025-12-07 17:14:59)76
- Python 实现:计算区间 n 到 m 中数字 x 出现的次数(字节豆包 | 322点数解答 | 2025-12-13 21:37:08)78
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)316
- Python程序:多人物9参数雷达图生成,参数折合百分制展示(字节豆包 | 873点数解答 | 2026-01-11 21:07:42)42