C++实现奇数从大到小排序的代码及开发建议
### 🌟 思路分析 本题要求从输入的 `n` 个正整数中找出所有奇数,并将这些奇数按从大到小的顺序输出。可以通过以下步骤实现: 1. 读取输入的 `n` 个正整数。 2. 筛选出其中的奇数。 3. 对奇数进行排序。 4. 输出排序后的奇数。 ### 💻 代码实现 ```cpp #include <iostream> #include <vector> #include <algorithm> int main() { int n; std::cin >> n; // 读取正整数的数量 std::vector<int> oddNumbers; // 用于存储奇数的向量 // 读取 n 个正整数 for (int i = 0; i < n; ++i) { int num; std::cin >> num; if (num % 2 != 0) { // 判断是否为奇数 oddNumbers.push_back(num); // 将奇数添加到向量中 } } // 对奇数向量进行从大到小的排序 std::sort(oddNumbers.begin(), oddNumbers.end(), std::greater<int>()); // 输出排序后的奇数 for (int i = 0; i < oddNumbers.size(); ++i) { if (i > 0) { std::cout << " "; // 数字之间用空格隔开 } std::cout << oddNumbers[i]; } std::cout << std::endl; return 0; } ``` ### 📝 代码解释 1. **读取输入**:使用 `std::cin` 读取正整数的数量 `n`,然后循环读取 `n` 个正整数。 2. **筛选奇数**:在读取每个正整数时,使用 `num % 2 != 0` 判断是否为奇数,如果是奇数,则将其添加到 `oddNumbers` 向量中。 3. **排序**:使用 `std::sort` 函数对 `oddNumbers` 向量进行从大到小的排序,通过 `std::greater<int>()` 实现降序排序。 4. **输出**:遍历排序后的 `oddNumbers` 向量,将奇数输出,数字之间用空格隔开。 ### ⚙️ 复杂度分析 - **时间复杂度**:$O(n log n)$,主要是排序的时间复杂度。 - **空间复杂度**:$O(k)$,其中 $k$ 是奇数的数量。 ### 💡 开发建议 - **错误处理**:可以添加输入验证,确保输入的 `n` 是正整数,并且输入的数字也是正整数。 - **代码复用**:可以将筛选奇数和排序的逻辑封装成函数,提高代码的复用性。 ######[AI写代码神器 | 654点数解答 | 2026-05-15 19:42:27]
- 使用位运算对黄金城原材料编号进行奇偶分类的C++程序(字节豆包 | 211点数解答 | 2026-02-28 20:38:57)48
- 超详细!整数奇偶与倍数判断代码解析及补全(字节豆包 | 462点数解答 | 2026-01-08 12:43:56)69
- 整数奇偶性及倍数判断代码实现(字节豆包 | 405点数解答 | 2026-04-25 19:08:03)22
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)386
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)356
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)505
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)391
- C++实现计算字符矩阵中十字图形个数(字节豆包 | 333点数解答 | 2026-03-14 19:46:38)50
- C++实现矩阵中十字图形个数的计算(字节豆包 | 847点数解答 | 2026-03-14 20:19:15)50
- C++计算字符矩阵中十字图形个数的实现与开发建议(字节豆包 | 720点数解答 | 2026-04-10 19:42:04)37
- C++程序:计算字符矩阵中'#'构成的十字图形个数(字节豆包 | 425点数解答 | 2026-04-24 19:19:07)32
- C++程序:计算字符矩阵中'#'构成的十字图形个数(字节豆包 | 354点数解答 | 2026-05-09 19:13:12)16