酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C++找出数组中最小值和次小值的实现

### 🔍思路分析 要找出数组中的最小值和次小值,可以先对数组进行遍历,在遍历过程中动态更新最小值和次小值。 ### 💻代码实现 ```cpp #include <iostream> #include <climits> int main() { int n; std::cin >> n; // 初始化最小值和次小值为最大整数 int min_val = INT_MAX; int second_min_val = INT_MAX; for (int i = 0; i < n; ++i) { int num; std::cin >> num; if (num < min_val) { // 如果当前数字小于最小值,更新次小值为原来的最小值,更新最小值为当前数字 second_min_val = min_val; min_val = num; } else if (num < second_min_val && num != min_val) { // 如果当前数字小于次小值且不等于最小值,更新次小值 second_min_val = num; } } std::cout << min_val << " " << second_min_val << std::endl; return 0; } ``` ### 📝代码解释 1. **初始化**:将`min_val`和`second_min_val`初始化为`INT_MAX`,这是`climits`库中定义的最大整数值,用于后续比较。 2. **输入处理**:通过`std::cin`读取数组长度`n`,然后依次读取`n`个整数。 3. **更新最小值和次小值**:在遍历过程中,如果当前数字小于`min_val`,则更新`second_min_val`为原来的`min_val`,并更新`min_val`为当前数字;如果当前数字小于`second_min_val`且不等于`min_val`,则更新`second_min_val`为当前数字。 4. **输出结果**:最后输出`min_val`和`second_min_val`。 ### 🚀复杂度分析 - **时间复杂度**:$O(n)$,其中$n$是数组的长度,因为只需要遍历数组一次。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 💡开发建议 - **边界条件处理**:在实际开发中,要考虑输入的合法性,例如`n`是否小于100,输入的整数是否在合理范围内等。 - **错误处理**:可以添加一些错误处理机制,例如当输入的`n`不合法时,给出相应的错误提示。 - **代码复用**:可以将查找最小值和次小值的逻辑封装成一个函数,提高代码的复用性。 ######[AI写代码神器 | 621点数解答 | 2026-05-09 20:43:48]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]