Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình tìm phần tử nhỏ nhất và lớn nhất của mảng trong C++

Trong bài toán này, cho mảng arr[] gồm n số nguyên. Nhiệm vụ là viết chương trình tìm phần tử nhỏ nhất và lớn nhất của mảng trong C++.

Mô tả bài toán

Cho mảng arr[] chứa n giá trị nguyên. Cần tìm giá trị lớn nhất và nhỏ nhất trong tất cả các phần tử của mảng.

Ví dụ minh họa

Đầu vào: arr[] = {2, 1, 6, 9, 4, 10, 15, 21}

Đầu ra: max = 21, min = 1

Phương pháp giải

Có nhiều cách giải quyết bài toán này:

Cách 1: So sánh trực tiếp (Iterative)

Duyệt qua mảng, so sánh từng phần tử với max và min hiện tại.

#include <iostream> 
using namespace std; 

void getMinMax(int arr[], int N) { 
    int max = arr[0], min = arr[0]; 
    for(int i = 1; i < N; i++) { 
        if(max < arr[i]) max = arr[i]; 
        if(min > arr[i]) min = arr[i]; 
    } 
    cout << "Maximum Value = " << max << "\n"; 
    cout << "Minimum Value = " << min; 
} 

int main() { 
    int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; 
    int N = 8; 
    getMinMax(arr, N); 
    return 0; 
}

Đầu ra: Maximum Value = 21, Minimum Value = 1

Cách 2: Đệ quy (Recursive)

Gọi đệ quy để tìm max/min của n-1 phần tử đầu, so sánh với phần tử cuối.

#include <iostream> 
using namespace std; 

int CalcMinValue(int arr[], int n) { 
    return (n == 1) ? arr[0] : min(arr[n-1], CalcMinValue(arr, n-1)); 
} 

int CalcMaxValue(int arr[], int n) { 
    return (n == 1) ? arr[0] : max(arr[n-1], CalcMaxValue(arr, n-1)); 
} 

int main() { 
    int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; 
    int N = 8; 
    cout << "Maximum Value = " << CalcMaxValue(arr, N) << endl; 
    cout << "Minimum Value = " << CalcMinValue(arr, N); 
    return 0; 
}

Đầu ra: Maximum Value = 21, Minimum Value = 1

Cách 3: Sử dụng thư viện STL

Sử dụng min_element() và max_element() từ <bits/stdc++.h>.

#include <bits/stdc++.h> 
using namespace std; 

int main() { 
    int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; 
    int N = 8; 
    cout << "Maximum Value = " << (*max_element(arr, arr+N)) << endl; 
    cout << "Minimum Value = " << (*min_element(arr, arr+N)); 
    return 0; 
}

Đầu ra: Maximum Value = 21, Minimum Value = 1