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

更新於:2020年9月15日

12K+ 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告