คำอธิบายโจทย์
ให้อาร์เรย์ 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