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
廣告