不使用vector和algorithm找出n个数字中前3个最小值的C++实现
```cpp #include <iostream> using namespace std; // 交换两个数的值 void swap(int &a, int &b) { int temp = a; a = b; b = temp; } // 找出前3个最小的值 void findThreeSmallest(int arr[], int n) { if (n < 1) return; int first = arr[0], second = 1e9, third = 1e9; for (int i = 1; i < n; i++) { if (arr[i] < first) { third = second; second = first; first = arr[i]; } else if (arr[i] < second) { third = second; second = arr[i]; } else if (arr[i] < third) { third = arr[i]; } } cout << "前3个最小的值为: "; if (n >= 1) cout << first << " "; if (n >= 2) cout << second << " "; if (n >= 3) cout << third << " "; cout << endl; } int main() { int n; cout << "请输入数字的数量 n: "; cin >> n; int *arr = new int[n]; cout << "请输入 " << n << " 个数字: "; for (int i = 0; i < n; i++) { cin >> arr[i]; } findThreeSmallest(arr, n); delete[] arr; return 0; } ``` ### 代码解释 1. **`swap` 函数**:用于交换两个整数的值,通过引用传递参数,实现两个数的交换。 2. **`findThreeSmallest` 函数**: - 首先初始化 `first` 为数组的第一个元素,`second` 和 `third` 初始化为一个较大的值(这里用 `1e9` 表示)。 - 遍历数组,根据当前元素与 `first`、`second`、`third` 的大小关系更新这三个值。 - 最后输出前 3 个最小的值。 3. **`main` 函数**: - 提示用户输入数字的数量 `n`。 - 动态分配一个大小为 `n` 的数组。 - 提示用户输入 `n` 个数字并存储到数组中。 - 调用 `findThreeSmallest` 函数找出前 3 个最小的值。 - 释放动态分配的数组内存。 ######[AI问答 | 631点数解答 | 2026-04-04 19:54:30]
- 解决 C++ 代码 “vector 未声明” 等错误:实现字符串单词反转功能(字节豆包 | 489点数解答 | 2025-11-12 14:49:29)76
- 修复代码:让含随机元素的 Win32 游戏界面代码正常运行(GPT | 2686点数解答 | 2024-10-31 15:01:39)374
- C++ 代码:巧妙计算 n×n 矩阵行、列、对角线平行直线元素和最大值(字节豆包 | 1151点数解答 | 2025-11-26 20:07:49)41
- C++ 简单方块世界玩家移动代码:分析、优化与注意事项揭秘(字节豆包 | 881点数解答 | 2025-12-20 19:47:37)49
- C++游戏代码中枚举类型定义报错原因及解决方案(字节豆包 | 371点数解答 | 2026-02-27 20:29:12)27
- C++代码:交换向量首尾元素与最值元素位置及代码小问题剖析(字节豆包 | 113点数解答 | 2024-11-04 11:28:05)277
- 完善鱼类大小筛选代码:处理输入错误与边界情况(字节豆包 | 123点数解答 | 2024-12-01 23:56:16)214
- C++代码数组越界错误分析与修正:巧妙使用 std::min 避免风险(DeepSeek | 263点数解答 | 2026-01-17 10:23:32)31
- C++ vector 边遍历边删除的常见陷阱与 remove_if 正确用法详解(阿里通义 | 1057点数解答 | 2026-03-22 09:23:09)17
- 优化代码解决 TLE 问题:从 $O(n^3)$ 到 $O(n^2)$(字节豆包 | 814点数解答 | 2026-04-04 20:10:30)6
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)46
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)56