找出数组中第二小值的C++代码实现
下面为你分析你提供的代码,并且按照提示实现找出数组中第二小的值。 ### 代码分析 你提供的代码仅把数组中最小值与 `a[1]` 进行了交换,不过并没有从 `a[2]` 到 `a[n]` 里找出最小值并与 `a[2]` 交换,因此代码不能正确输出数组里的次小值。 ### 正确实现 ```cpp #include <iostream> using namespace std; int a[100], n; // 交换两个元素的值 void swap(int &x, int &y) { int temp = x; x = y; y = temp; } int main() { cin >> n; // 读取数组元素 for (int i = 1; i <= n; i++) { cin >> a[i]; } // 第一步:从 a[1] 到 a[n] 找最小值,与 a[1] 交换 int minIndex1 = 1; for (int i = 2; i <= n; i++) { if (a[i] < a[minIndex1]) { minIndex1 = i; } } swap(a[1], a[minIndex1]); // 第二步:从 a[2] 到 a[n] 找最小值,与 a[2] 交换 int minIndex2 = 2; for (int i = 3; i <= n; i++) { if (a[i] < a[minIndex2]) { minIndex2 = i; } } swap(a[2], a[minIndex2]); // 输出次小值 cout << a[2]; return 0; } ``` ### 代码解释 1. **读取输入**:借助 `cin` 读取数组的长度 `n`,接着读取 `n` 个整数存于数组 `a` 中。 2. **找出最小值并交换**:从 `a[1]` 到 `a[n]` 找到最小值,把其索引记录在 `minIndex1` 里,然后将 `a[1]` 与 `a[minIndex1]` 交换。 3. **找出次小值并交换**:从 `a[2]` 到 `a[n]` 找到最小值,把其索引记录在 `minIndex2` 里,然后将 `a[2]` 与 `a[minIndex2]` 交换。 4. **输出结果**:输出 `a[2]`,也就是数组中的次小值。 ### 复杂度分析 - **时间复杂度**:$O(n)$,这里的 $n$ 是数组的长度。要遍历数组两次,每次遍历的时间复杂度为 $O(n)$。 - **空间复杂度**:$O(1)$,仅需常数级别的额外空间。 ######[AI问答 | 696点数解答 | 2026-03-28 19:40:41]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)346
- 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
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)316