Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมหาค่าต่ำสุดและสูงสุดในอาร์เรย์ C++


คำอธิบายโจทย์

ให้อาร์เรย์ arr[] ขนาด n หาค่าต่ำสุด (min) และสูงสุด (max) ของอาร์เรย์

ตัวอย่าง

Input: arr[] = {2, 1, 6, 9, 4, 10, 15, 21}

Output: max = 21, min = 1

วิธีแก้ปัญหา

1. วิธี Iterative (วนลูป)

กำหนด max = min = arr[0] แล้ววนเปรียบเทียบแต่ละค่า

#include <iostream>
using namespace std;

void getMinMax(int arr[], int N) {
    int max = arr[0], min = arr[0];
    for(int i=1; i 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;
}

2. วิธี Recursive (เรียกซ้ำ)

หารอาร์เรย์เป็นส่วนย่อย หา min/max แล้วรวม

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

3. ใช้ STL (min_element, max_element)

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

ผลลัพธ์

Maximum Value = 21
Minimum Value = 1