C++ 算法:求n个整数的最大值和最小值 - 代码详解
C++ 算法:求n个整数的最大值和最小值 - 代码详解
问题描述:
任意输入n个整数,求出它们的最大值和最小值。
输入:
输入只有一行,包括一个整数n(1<=n<=20),后面跟着n个数. 每个数的范围在0到32767之间。
输出:
输出只有一行,包括2个整数,分别为最大值和最小值。
代码示例:
#include <iostream>
#include <vector>
#include <limits>
int main() {
int n;
std::cin >> n;
std::vector<int> nums(n);
for (int i = 0; i < n; i++) {
std::cin >> nums[i];
}
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max();
for (int i = 0; i < n; i++) {
if (nums[i] > max) {
max = nums[i];
}
if (nums[i] < min) {
min = nums[i];
}
}
std::cout << max << ' ' << min << std::endl;
return 0;
}
代码解释:
- 头文件:
iostream: 用于标准输入输出操作,如cin和cout。vector: 用于存储输入的整数数组。limits: 用于获取数据类型最大值和最小值,例如std::numeric_limits<int>::min()获取整数类型的最小值。
- 输入:
- 首先,输入整数
n,表示要输入的整数个数。 - 然后,使用循环读取
n个整数,并将其存储在nums向量中。
- 首先,输入整数
- 初始化最大值和最小值:
- 初始化
max为std::numeric_limits<int>::min(),即整数类型的最小值。 - 初始化
min为std::numeric_limits<int>::max(),即整数类型的最大值。
- 初始化
- 遍历数组:
- 循环遍历
nums向量中的每一个元素。 - 如果当前元素
nums[i]大于max,则更新max为nums[i]。 - 如果当前元素
nums[i]小于min,则更新min为nums[i]。
- 循环遍历
- 输出:
- 最后,输出
max和min,即最大值和最小值。
- 最后,输出
算法优化:
该算法的时间复杂度为 O(n),其中 n 为输入整数的个数。可以考虑以下优化:
- 使用
std::max和std::min函数,可以简化代码并提高可读性。 - 在实际应用中,如果数据量较大,可以考虑使用更有效的算法,例如堆排序或快速排序,以实现更快的排序速度。
总结:
本文介绍了使用 C++ 语言编写算法,求解n个整数中的最大值和最小值的方法,并提供了代码示例和算法优化建议。希望这篇文章能帮助你更好地理解该算法的实现思路和应用场景。
原文地址: https://www.cveoy.top/t/topic/qldg 著作权归作者所有。请勿转载和采集!