C++ 中方陣中的最大值和最小值


問題陳述

給定一個 n*n 階方陣,求出方陣中的最大值和最小值

舉例

如果給定的矩陣是 −

{{15, 17, 19}, {5, 1, 7}, {14, 5, 16}}
then
Minimum number is 1 and maximum number is 19

演算法

  • 從矩陣中選取兩個元素,一個來自該行開頭,另一個來自同一行末尾
  • 對它們進行比較,然後將較小的元素與矩陣的最小值比較,將較大的元素與矩陣的最大值比較。
  • 我們可以看到,對於兩個元素需要 3 次比較,因此對於遍歷整個矩陣,我們需要總共 3/2n2 次比較

舉例

現在讓我們看一個示例 −

#include <bits/stdc++.h>
#define MAX 200
using namespace std;
void getMinMax(int matrix[MAX][MAX], int n) {
   int min = INT_MAX;
   int max = INT_MIN;
   for (int i = 0; i < n; ++i) {
      for (int j = 0; j <= n / 2; ++j){
         if (matrix[i][j] > matri[i][n - j - 1]) {
            if (min > matrixi][n - j - 1]) {
               min = marix[i][n - j -1];
            }
            if (max < matrixi][j]) {
               max = marix[i][j];
            }
         } else {
            if (min > matrixi][j]) {
               min = marix[i][j];
            }
            if (max < matrixi][n - j - 1]) {
               max = marix[i][n - j - 1];
            }
         }
      }
   }
   cout << "Maximum = " << max << ", Minimu = " << min << endl;
}
int main() {
   int matrix[MAX][MAX] = { {15, 17, 19}, {5, 1, 7}, {14, 5, 16} };
   getMinMax(matrix, 3);
   return 0;
}

輸出

Maximum = 19, Minimum = 1

更新於: 2019 年 12 月 31 日

159 次瀏覽

開啟您的 職業

完成課程即獲認證

開始
廣告