C++ 数组查找最小和最大元素(三种方法)


发布日期 : 2023-05-31 23:18:55 UTC

访问量: 9 次浏览

C++程序 在数组中查找最小和最大元素

给定一个数组,编写函数来找到其中的最小和最大元素。

例子:

// C++程序查找最小值(或最大值)
// 在数组中。
#include <iostream>
using namespace std;

int getMin(int arr[], int n)
{
    int res = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] < res)
            res = arr[i];
    return res;
}

int getMax(int arr[], int n)
{
    int res = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] > res)
            res = arr[i];
    return res;
}

int main()
{
    int arr[] = {12, 1234, 45, 67, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "数组中的最小元素:" << getMin(arr, n) << endl;
    cout << "数组中的最大元素:" << getMax(arr, n) << endl;
    return 0;
}

输出:

数组中的最小元素:1
数组中的最大元素:1234

时间复杂度:O(n)

辅助空间:O(1),因为没有使用额外空间。

递归解决方案

例子:

// C++程序查找
// in an array.
#include <iostream>
using namespace std;

int getMin(int arr[], int n)
{
    // 如果只有一个元素,请返回它。
    // 否则返回第一个元素的最小值和
    // 剩余数组的最小值。
    return (n == 1) ? arr[0] : min(arr[0],
                         getMin(arr + 1, n-1));
}

int getMax(int arr[], int n)
{
    // 如果只有一个元素,请返回它。
    // 否则返回第一个元素的最大值和
    // 剩余数组的最大值。
    return (n == 1) ? arr[0] : max(arr[0],
                          getMax(arr + 1, n-1));
}

int main()
{
    int arr[] = {12, 1234, 45, 67, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "数组中的最小元素:" << getMin(arr, n) << endl;
    cout << "数组中的最大元素:" << getMax(arr, n) << endl;
    return 0;
}

输出:

数组中的最小元素:1
数组中的最大元素:1234

时间复杂度:O(n)

辅助空间:O(n),因为由于递归使用了隐式堆栈。

使用库函数:我们可以使用 min_element()max_element() 来查找数组的最小值和最大值。

例子:

// C++程序查找最小(或最大)元素
// 在数组中。
#include <iostream>
#include <algorithm>
using namespace std;

int getMin(int arr[], int n)
{
    return *min_element(arr, arr + n);
}

int getMax(int arr[], int n)
{
    return *max_element(arr, arr + n);
}

int main()
{
    int arr[] = {12, 1234, 45, 67, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "数组中的最小元素:" << getMin(arr, n) << endl;
    cout << "数组中的最大元素:" << getMax(arr, n) << endl;
    return 0;
}

输出:

数组中的最小元素:1
数组中的最大元素:1234

时间复杂度:O(n)

辅助空间:O(1),因为没有使用额外空间。