C++ 奇偶数分离排序输出实现及边界测试要点
根据您的描述,这是一个 **C++** 编程题目,要求将输入的 n 个正整数分成奇数和偶数两组,并分别按从小到大排序输出。 下面给出一个**完整、清晰且符合题目要求**的 C++ 代码,并附带详细解释。 ## 📝 完整代码实现 ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; // 输入数字个数 vector<int> odd, even; // 分别存储奇数和偶数 for (int i = 0; i < n; i++) { int x; cin >> x; if (x % 2 == 0) { even.push_back(x); // 偶数 } else { odd.push_back(x); // 奇数 } } // 分别从小到大排序 sort(odd.begin(), odd.end()); sort(even.begin(), even.end()); // 输出奇数(若存在) for (int i = 0; i < odd.size(); i++) { if (i > 0) cout << ' '; cout << odd[i]; } cout << endl; // 换行 // 输出偶数(若存在) for (int i = 0; i < even.size(); i++) { if (i > 0) cout << ' '; cout << even[i]; } cout << endl; return 0; } ``` --- ## 🔍 代码详细解释 | 部分 | 说明 | |------|------| | `#include <vector>` | 使用动态数组存储数据,方便后续排序和遍历 | | `#include <algorithm>` | 提供 `sort()` 函数 | | `x % 2 == 0` | 判断偶数;否则为奇数 | | `sort(odd.begin(), odd.end());` | 将奇数容器从小到大排序(默认升序) | | 输出循环中的 `if (i > 0) cout << ' ';` | 控制数字间用空格分隔,且行末无多余空格 | --- ## 💡 重点注意事项 ### 1️⃣ 边界处理 - **输入 n 可能为 0**(虽然题目通常给出 n>=1,但最好考虑);如果是 0,程序会正常输出两个空行,符合逻辑。 - **奇数和偶数可能某一类为空**:代码不会输出空行内容,只输出一个换行,依然符合格式要求。 ### 2️⃣ 内存与效率 - 使用 `vector` 动态扩展,适合 n <= 100 的小规模数据,空间复杂度 O(n)。 - 排序使用 `sort()`,平均时间复杂度 O(n log n),完全满足 n=100 的规模。 ### 3️⃣ 输出格式细节 - 要求每行数字之间用**空格**分隔,行尾**不能有多余空格**。上述代码通过在数字前加空格的方式实现(首个数字前不加)。 - 奇数和偶数各占一行,即使某行为空,也输出一个空行(因为第一行奇数输出后立刻 `cout << endl;`)。 --- ## 🔧 测试样例验证 **输入:** ``` 5 9 5 10 7 2 ``` **运行过程:** - 奇数:9,5,7 → 排序后:5 7 9 - 偶数:10,2 → 排序后:2 10 **输出:** ``` 5 7 9 2 10 ``` --- ## 🧩 扩展思路(可选) 如果题目允许**不区分奇偶顺序**,也可以一次性排序后按奇偶筛选输出,但当前方法是**最清晰直观**的。若要求更高效率,可用计数排序,但考虑到 n<=100,普通 `sort` 已足够高效。 --- ## 📚 建议 - **熟悉 STL 容器**(如 vector, sort)是 C++ 常用技能,务必掌握。 - **留意输出格式**:这类题目常因多余空格或缺少换行导致判题错误。 - 建议在本地编译运行,测试几组边界数据(如全奇数、全偶数、n=1)确保稳定。 ######[AI写代码神器 | 934点数解答 | 2026-08-15 15:31:18]
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)316
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)560
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)474
- Python 实现:四位数重组求最大最小数差值(字节豆包 | 144点数解答 | 2026-02-01 12:49:54)77
- Python 代码求解:小明当选 Y 国总统至少需多少选民支持?(字节豆包 | 207点数解答 | 2026-02-01 12:51:14)79
- 拍卖干草:如何定价才能收益最大化?(DeepSeek | 1171点数解答 | 2026-02-23 21:10:09)79
- 计算分组乘船最重重量和的代码实现(字节豆包 | 485点数解答 | 2026-03-28 20:14:08)31
- C++ 实现问卷调查反馈值排序、去重和统计(字节豆包 | 523点数解答 | 2026-05-31 15:38:45)75
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)429
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)433
- sys_module 表结构与 Java 实体类 SysModule 详解(字节豆包 | 252点数解答 | 2025-04-09 10:54:17)252
- MySQL表与Java类:`sys_role` 的创建及实体类定义全解析(字节豆包 | 168点数解答 | 2025-04-10 14:39:47)265