在Java中查找矩阵每一列的最大值和最小值?


在Java中,数组是一个对象。它是一种非基本数据类型,用于存储相似数据类型的多个值。Java中的矩阵只不过是一个多维数组,它表示多行和多列。

这里我们给出一个包含一组元素的矩阵,根据题意,我们需要找出该矩阵每一列的最大值和最小值。

让我们深入探讨这篇文章,了解如何使用Java编程语言来实现这一点。

展示一些实例

实例1

给定矩阵 =

21 	22	23
24	25	26
27	28	29
  • 第1列中的最大元素是27

  • 第2列中的最大元素是28

  • 第3列中的最大元素是29

  • 第1列中的最小元素是21

  • 第2列中的最小元素是22

  • 第3列中的最小元素是23

实例2

给定矩阵 =

121 	222	243	432
124	245	256	657
237	258	229	345
176	453	756	343
  • 第2列中的最大元素是453

  • 第3列中的最大元素是756

  • 第4列中的最大元素是657

  • 第1列中的最小元素是121

  • 第2列中的最小元素是222

  • 第3列中的最小元素是229

  • 第4列中的最小元素是343

实例3

给定矩阵 =

1 	2	3
4	5	6
7	8	9
  • 第1列中的最大元素是7

  • 第2列中的最大元素是8

  • 第3列中的最大元素是9

  • 第1列中的最小元素是1

  • 第2列中的最小元素是2

  • 第3列中的最小元素是3

算法

算法1:(使用嵌套for循环)

  • 步骤1 − 定义一个二维矩阵。

  • 步骤2 − 获取行数和列数。

  • 步骤3 − 使用嵌套for循环查找每一列中的最大元素。将每一列中的每个元素与当前最大值进行比较,如果找到更大的元素,则更新最大值。

  • 步骤4 − 使用另一个嵌套for循环查找每一列中的最小元素。将每一列中的每个元素与当前最小值进行比较,如果找到更小的元素,则更新最小值。

  • 步骤5 − 打印结果作为输出。

算法2:(使用Stream API)

  • 步骤1 − 定义一个二维矩阵。

  • 步骤2 − 获取列数。

  • 步骤3 − 使用for循环和Java Stream API查找每一列中的最大元素。将每一列中的元素映射到整数流,并在该流中查找最大值。

  • 步骤4 − 使用for循环和Java Stream API查找每一列中的最小元素。将每一列中的元素映射到整数流,并在该流中查找最小值。

  • 步骤5 − 打印结果作为输出。

语法

Java中的Matrix.length()方法返回给定矩阵的长度。

以下是它的语法:

inputMatrix.lenght

其中,“inputMatrix”指的是给定的矩阵。

Arrays.stream(matrix) 将二维整数数组矩阵转换为数组流,其中流中的每个数组代表矩阵中的一行。

Arrays.stream(matrix)

.mapToInt(row -> row[column]) 将流中的每个数组(行)映射到指定列索引处的整数。

.mapToInt(row -> row[column]) 

.max() 返回流中的最大元素。

.max()

.min() 返回流中的最小元素。

.min()

多种方法

我们提供了多种解决方案。

  • 使用嵌套for循环

  • 使用Stream API

让我们逐一查看程序及其输出。

方法1:使用嵌套for循环

在这种方法中,矩阵元素将在程序中初始化。然后,根据算法,使用嵌套for循环查找该矩阵每一列中的最大值和最小值。

示例

public class Main {
   public static void main(String[] args) {
      int[][] inputMatrix = {
         {101, 15, 121},
         {210, 115, 71},
         {81, 215, 118}
      }; 
      int r = inputMatrix.length;
      int c = inputMatrix[0].length; 
      
      //loop to find the largest element in each column
      for (int x = 0; x < c; x++) {
         int maxm = inputMatrix[0][x];
         for (int y = 1; y < r; y++) {
            if (inputMatrix[y][x] > maxm) {
               maxm = inputMatrix[y][x];
            }
         }
         System.out.println("The largest element in column " + (x+1) + " is " + maxm);
      }
      
      //loop to find the smallest elements in each column
      for (int x = 0; x < c; x++) {
         int mimm = inputMatrix[0][x];
         for (int y = 1; y < r; y++) {
            if (inputMatrix[y][x] < mimm) {
               mimm = inputMatrix[y][x];
            }
         }
         System.out.println("The smallest element in column " + (x+1) + " is " + mimm);
      }
   }
}

输出

The largest element in column 1 is 210
The largest element in column 2 is 215
The largest element in column 3 is 121
The smallest element in column 1 is 81
The smallest element in column 2 is 15
The smallest element in column 3 is 71

方法2:使用矩阵的动态初始化

在这种方法中,矩阵元素将在程序中初始化。然后,根据算法,使用Java流查找该矩阵每一列中的最大值和最小值。

示例

import java.util.Arrays; 
public class Main {
   public static void main(String[] args) {
      
      // Define the matrix
      int[][] matrix = {
         {1, 5, 3},
         {2, 7, 4},
         {9, 6, 8}
      };
      
      // Get the number of columns
      int numCols = matrix[0].length;
      
      // Iterate over each column
      for (int i = 0; i < numCols; i++) {
         
         // Create a final variable to hold the current column number
         final int column = i;
         
         // Use Java streams to find the largest element in the column
         int max = Arrays.stream(matrix)
               .mapToInt(row -> row[column])
               .max()
               .getAsInt();
            
         // Use Java streams to find the smallest element in the column
         int min = Arrays.stream(matrix)
            .mapToInt(row -> row[column])
            .min()
            .getAsInt();
            
         // Output the results to the console
         System.out.println("---------------");
         System.out.println("Column " + (i + 1) + ":");
         System.out.println("---------------");
         System.out.println("Largest element: " + max);
         System.out.println("Smallest element: " + min);
      }
   }
}

输出

---------------
Column 1:
---------------
Largest element: 9
Smallest element: 1
---------------
Column 2:
---------------
Largest element: 7
Smallest element: 5
---------------
Column 3:
---------------
Largest element: 8
Smallest element: 3

在这篇文章中,我们探讨了使用Java编程语言查找矩阵每一列中的最大值和最小值的各种方法。

更新于:2023年5月4日

1000+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告