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