Java 查找矩阵主对角线和副对角线中的最大和最小元素
在Java中,数组是一个对象。它是一种存储相同数据类型值的非原始数据类型。在java中,矩阵只是一个表示多行和多列的多维数组。
在这里,我们给出了一个包含一组元素的矩阵,根据问题的陈述,我们需要找到矩阵的主对角线和副对角线中的最大和最小元素。
让我们深入研究这篇文章,了解如何使用Java编程语言来实现。
为了向您展示一些实例
实例-1
给定矩阵 =
21 22 23
24 25 26
27 28 29
- 主对角线中最大的元素:29
-
主对角线中最小的元素:21
-
次对角线中最大的元素:27
-
次对角线中最小的元素:23
实例-2
给定矩阵 =
121 222 243 432
124 245 256 657
237 258 229 345
176 453 756 343
- 主对角线上最大的元素: 343
-
主对角线上最小的元素: 121
-
次对角线上最大的元素: 432
-
次对角线上最小的元素: 176
实例-3
给定矩阵 =
1 2 3
4 5 6
7 8 9
- 主对角线中的最大元素:9
-
主对角线中的最小元素:1
-
次对角线中的最大元素:7
-
次对角线中的最小元素:3
步骤
-
步骤1 - 取得矩阵。
-
步骤2 - 迭代主对角线和次对角线上的元素。
-
步骤3 - 打印每个对角线中的最大和最小元素。
语法
Matrix.length() 方法在Java中返回给定矩阵的长度。
下面是它的语法-
inputMatrix.lenght
‘inputMatrix’是指给定的矩阵。
多种方法
我们以不同的方法提供了解决方案。
- 通过使用矩阵元素的静态初始化
-
通过使用用户定义的方法
让我们逐一查看该程序及其输出。
方法1:通过使用矩阵元素的静态初始化
在这种方法中,程序将初始化矩阵元素。然后按照算法找到该矩阵主对角线和副对角线上最大和最小的元素。
示例
public class Main {
public static void main(String[] args) {
// define a matrix and initialize it with hardcoded values
int[][] inputMatrix = {{11, 22, 33}, {44, 55, 66}, {77, 88, 99}};
// set initial values for the maximum and minimum elements in the primary diagonal
int max_primary = inputMatrix[0][0];
int min_primary = inputMatrix[0][0];
// set initial values for the maximum and minimum elements in the secondary diagonal
int max_secondary = inputMatrix[0][inputMatrix.length-1];
int min_secondary = inputMatrix[0][inputMatrix.length-1];
for(int i = 0; i < inputMatrix.length; i++) {
// iterate over the rows of the matrix
if(inputMatrix[i][i] > max_primary) {
// check if the current element belongs to the primary diagonal and update the maximum and minimum values as needed
max_primary = inputMatrix[i][i];
}
if(inputMatrix[i][i] < min_primary) {
min_primary = inputMatrix[i][i];
}
if(inputMatrix[i][inputMatrix.length-i-1] > max_secondary) {
// check if the current element belongs to the secondary diagonal and update the maximum and minimum values as needed
max_secondary = inputMatrix[i][inputMatrix.length-i-1];
}
if(inputMatrix[i][inputMatrix.length-i-1] < min_secondary) {
min_secondary = inputMatrix[i][inputMatrix.length-i-1];
}
}
// print out the largest and smallest elements in the primary and secondary diagonal of the matrix
System.out.println("Largest element in primary diagonal: " + max_primary);
System.out.println("Smallest element in primary diagonal: " + min_primary);
System.out.println("Largest element in secondary diagonal: " + max_secondary);
System.out.println("Smallest element in secondary diagonal: " + min_secondary);
}
}
输出
Largest element in primary diagonal: 99
Smallest element in primary diagonal: 11
Largest element in secondary diagonal: 77
Smallest element in secondary diagonal: 33
方法2:使用自定义方法
在这个方法中,矩阵元素将在程序中被初始化。然后通过将矩阵作为参数传递给用户定义的方法,并在方法内根据算法找到该矩阵的主对角线和副对角线上的最大和最小元素。
示例
public class Main {
public static void main(String[] args) {
// Define a square matrix and initialize it with hardcoded values
int[][] inputMatrix = {{21, 32, 32}, {14, 53, 69}, {71, 84, 95}};
// Find the largest and smallest elements in the primary diagonal
int[] primaryMinMax = findMinMax(inputMatrix, true);
int max_primary = primaryMinMax[0];
int min_primary = primaryMinMax[1];
// Find the largest and smallest elements in the secondary diagonal
int[] secondaryMinMax = findMinMax(inputMatrix, false);
int max_secondary = secondaryMinMax[0];
int min_secondary = secondaryMinMax[1];
// Print out the largest and smallest elements in the primary and secondary diagonal of the matrix
System.out.println("Largest element in primary diagonal: " + max_primary);
System.out.println("Smallest element in primary diagonal: " + min_primary);
System.out.println("Largest element in secondary diagonal: " + max_secondary);
System.out.println("Smallest element in secondary diagonal: " + min_secondary);
}
// A user-defined method to find the largest and smallest elements in a diagonal of a matrix
public static int[] findMinMax(int[][] mat, boolean primary) {
int[] minMax = new int[2];
if (primary) {
minMax[0] = mat[0][0];
minMax[1] = mat[0][0];
for (int i = 1; i < mat.length; i++) {
if (mat[i][i] > minMax[0]) {
minMax[0] = mat[i][i];
}
if (mat[i][i] < minMax[1]) {
minMax[1] = mat[i][i];
}
}
} else {
minMax[0] = mat[0][mat.length-1];
minMax[1] = mat[0][mat.length-1];
for (int i = 1; i < mat.length; i++) {
if (mat[i][mat.length-i-1] > minMax[0]) {
minMax[0] = mat[i][mat.length-i-1];
}
if (mat[i][mat.length-i-1] < minMax[1]) {
minMax[1] = mat[i][mat.length-i-1];
}
}
}
return minMax;
}
}
输出
Largest element in primary diagonal: 95
Smallest element in primary diagonal: 21
Largest element in secondary diagonal: 71
Smallest element in secondary diagonal: 32
在本文中,我们使用Java编程语言探索了在矩阵的主对角线和副对角线中找到最大和最小元素的不同方法。