C++程式:查詢陣列中的最小(或最大)元素
在這個問題中,我們得到一個包含n個整數的陣列arr[]。我們的任務是編寫一個C++程式來查詢陣列中的最小和最大元素。
問題描述 − 這裡,我們有一個數組arr[],包含n個整數值。我們必須找到陣列中所有值中的最大值和最小值。
讓我們舉個例子來理解這個問題:
輸入
arr[] = {2, 1, 6, 9, 4, 10, 15, 21}
輸出
max = 21 , min = 1
解決方案方法
這個問題可能有幾種解決方案:
一種解決方案是直接比較陣列的元素。這是透過檢查陣列的每個元素,然後使用比較來查詢最大值和最小值來完成的。
這可以使用兩種不同的方法來完成:
- 迭代方法
- 遞迴方法
解決問題的迭代方法:
我們將遍歷陣列,提取陣列的每個元素,並將其與陣列的最大和最小元素進行比較。
程式說明了我們解決方案的工作原理:
示例
#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; }
輸出
Maximum Value = 21 Minimum Value = 1
解決問題的遞迴方法:
在這種方法中,我們將透過反覆呼叫方法來查詢陣列所有元素的最大值和最小值。
程式說明了我們解決方案的工作原理:
示例
#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], CalcMinValue(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; }
輸出
Maximum Value = 21 Minimum Value = 1
這個問題也可以使用C++程式語言標準模板庫中提供的內建函式來解決。
查詢解決方案的方法是min_element()和max_element(),這些方法可以在C++中的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; }
輸出
Maximum Value = 21 Minimum Value = 1
廣告