C++实现找出数组中的最小值和次小值
### 🌟思路分析 要找出数组中的最小值和次小值,可以先将最小值和次小值初始化为一个较大的数(这里使用 `INT_MAX`),然后遍历数组,依次比较每个元素与当前最小值和次小值的大小关系,更新最小值和次小值。 ### 💻代码实现 ```cpp #include <iostream> #include <climits> int main() { int n; std::cin >> n; int min1 = INT_MAX; // 最小值 int min2 = INT_MAX; // 次小值 for (int i = 0; i < n; ++i) { int num; std::cin >> num; if (num < min1) { min2 = min1; min1 = num; } else if (num < min2 && num != min1) { min2 = num; } } std::cout << min1 << " " << min2 << std::endl; return 0; } ``` ### 📝代码解释 1. **初始化最小值和次小值**:使用 `INT_MAX` 初始化 `min1` 和 `min2`,确保初始值足够大,以便后续比较。 2. **遍历数组**:通过 `for` 循环读取数组中的每个元素。 3. **更新最小值和次小值**: - 如果当前元素小于 `min1`,则将 `min1` 更新为当前元素,并将原来的 `min1` 值赋给 `min2`。 - 如果当前元素大于等于 `min1` 且小于 `min2`,并且不等于 `min1`,则将 `min2` 更新为当前元素。 4. **输出结果**:最后输出 `min1` 和 `min2`。 ### ⚙️复杂度分析 - **时间复杂度**:$O(n)$,其中 $n$ 是数组的长度。因为只需要遍历数组一次。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 🎯开发建议 - **错误处理**:可以添加对输入的合法性检查,例如检查 `n` 是否小于 100。 - **代码可读性**:可以添加注释来提高代码的可读性,特别是在更新最小值和次小值的部分。 ######[AI写代码神器 | 556点数解答 | 2026-05-09 20:45:37]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- C++ 破解数字游戏:找出数组添加全排列后相同数字最大数量(字节豆包 | 456点数解答 | 2025-02-27 18:56:24)296
- C++助力小小李老师:求解数组添加排列后最多相同数字数量(字节豆包 | 424点数解答 | 2025-03-01 14:46:52)237
- C++助力小小李老师:破解数组数字游戏最高得分之谜(字节豆包 | 434点数解答 | 2025-03-05 07:50:34)256
- C++ 助力小小李老师玩转数字游戏,找出数组最大相同元素次数!(DeepSeek | 1118点数解答 | 2025-03-25 21:11:51)209
- C++ 助力小小李老师:解决数组添加排列找最大重复元素难题(DeepSeek | 833点数解答 | 2025-03-26 17:06:19)196
- C++助力小小李老师:破解数组排列数字游戏最高得分之谜(DeepSeek | 901点数解答 | 2025-03-26 17:08:11)194
- C++ 破解数字游戏:为数组添加排列找出最大相同元素数量(DeepSeek | 1815点数解答 | 2025-03-27 17:50:16)200
- C++ 助力小小李老师:找出数组添加排列后相同数字的最大数量 (DeepSeek | 762点数解答 | 2025-03-27 17:53:47)201
- 动态规划求解数组下标元素和最大值代码分析与优化(字节豆包 | 346点数解答 | 2026-03-16 17:56:30)35
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)33
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)354