如何找出数组中的最小值和次小值
以下是实现找出数组中最小值和次小值的代码: ```cpp #include <iostream> using namespace std; int main() { int a[100], n; cin >> n; // 读取数组元素 for (int i = 0; i < n; i++) { cin >> a[i]; } // 初始化最小值和次小值 int min1 = a[0]; int min2 = a[1]; if (min1 > min2) { int temp = min1; min1 = min2; min2 = temp; } // 遍历数组更新最小值和次小值 for (int i = 2; i < n; i++) { if (a[i] < min1) { min2 = min1; min1 = a[i]; } else if (a[i] < min2 && a[i] != min1) { min2 = a[i]; } } // 输出结果 cout << min1 << " " << min2; return 0; } ``` ### 代码解释 1. **读取输入**:首先读取数组的长度 `n`,然后读取 `n` 个整数存入数组 `a` 中。 2. **初始化最小值和次小值**:选取数组的前两个元素,将较小的设为 `min1`(最小值),较大的设为 `min2`(次小值)。 3. **遍历数组更新最小值和次小值**:从数组的第三个元素开始遍历,如果当前元素小于 `min1`,则更新 `min2` 为原来的 `min1`,并更新 `min1` 为当前元素;如果当前元素小于 `min2` 且不等于 `min1`,则更新 `min2` 为当前元素。 4. **输出结果**:输出最小值 `min1` 和次小值 `min2`,中间用空格隔开。 ### 复杂度分析 - **时间复杂度**:$O(n)$,其中 $n$ 是数组的长度,只需要遍历数组一次。 - **空间复杂度**:$O(1)$,只需要常数级的额外空间。 ######[AI问答 | 536点数解答 | 2026-03-28 19:43:03]
- C++ 破解数字游戏:找出数组添加全排列后相同数字最大数量(字节豆包 | 456点数解答 | 2025-02-27 18:56:24)273
- C++助力小小李老师:求解数组添加排列后最多相同数字数量(字节豆包 | 424点数解答 | 2025-03-01 14:46:52)224
- C++助力小小李老师:破解数组数字游戏最高得分之谜(字节豆包 | 434点数解答 | 2025-03-05 07:50:34)239
- C++ 助力小小李老师玩转数字游戏,找出数组最大相同元素次数!(DeepSeek | 1118点数解答 | 2025-03-25 21:11:51)193
- C++ 助力小小李老师:解决数组添加排列找最大重复元素难题(DeepSeek | 833点数解答 | 2025-03-26 17:06:19)179
- C++助力小小李老师:破解数组排列数字游戏最高得分之谜(DeepSeek | 901点数解答 | 2025-03-26 17:08:11)179
- C++ 破解数字游戏:为数组添加排列找出最大相同元素数量(DeepSeek | 1815点数解答 | 2025-03-27 17:50:16)183
- C++ 助力小小李老师:找出数组添加排列后相同数字的最大数量 (DeepSeek | 762点数解答 | 2025-03-27 17:53:47)181
- 动态规划求解数组下标元素和最大值代码分析与优化(字节豆包 | 346点数解答 | 2026-03-16 17:56:30)21
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)16
- C#工程师必知:自定义委托的详细步骤与示例(百度文心 | 388点数解答 | 2023-11-09 17:55:52)360
- 工程师必备:十大APP性能优化方案大揭秘(百度文心 | 300点数解答 | 2023-11-09 18:31:04)332