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 - 列印每個對角線上的最大和最小元素。
語法
Java中的Matrix.length()方法返回給定矩陣的長度。
以下是它的語法:
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程式語言查詢矩陣主對角線和副對角線上的最大和最小元素的不同方法。