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程式語言查詢矩陣主對角線和副對角線上的最大和最小元素的不同方法。

更新於:2023年5月4日

415 次瀏覽

開啟你的職業生涯

完成課程後獲得認證

開始學習
廣告