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;
}

代码解释:

  1. 头文件:
    • iostream: 用于标准输入输出操作,如 cincout
    • vector: 用于存储输入的整数数组。
    • limits: 用于获取数据类型最大值和最小值,例如 std::numeric_limits<int>::min() 获取整数类型的最小值。
  2. 输入:
    • 首先,输入整数 n,表示要输入的整数个数。
    • 然后,使用循环读取 n 个整数,并将其存储在 nums 向量中。
  3. 初始化最大值和最小值:
    • 初始化 maxstd::numeric_limits<int>::min(),即整数类型的最小值。
    • 初始化 minstd::numeric_limits<int>::max(),即整数类型的最大值。
  4. 遍历数组:
    • 循环遍历 nums 向量中的每一个元素。
    • 如果当前元素 nums[i] 大于 max,则更新 maxnums[i]
    • 如果当前元素 nums[i] 小于 min,则更新 minnums[i]
  5. 输出:
    • 最后,输出 maxmin,即最大值和最小值。

算法优化:

该算法的时间复杂度为 O(n),其中 n 为输入整数的个数。可以考虑以下优化:

  • 使用 std::maxstd::min 函数,可以简化代码并提高可读性。
  • 在实际应用中,如果数据量较大,可以考虑使用更有效的算法,例如堆排序或快速排序,以实现更快的排序速度。

总结:

本文介绍了使用 C++ 语言编写算法,求解n个整数中的最大值和最小值的方法,并提供了代码示例和算法优化建议。希望这篇文章能帮助你更好地理解该算法的实现思路和应用场景。

C++ 算法:求n个整数的最大值和最小值 - 代码详解

原文地址: https://www.cveoy.top/t/topic/qldg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录