Java 如何找到矩阵的每列的最大值和最小值

Java 如何找到矩阵的每列的最大值和最小值

在Java中,数组是一个对象。它是一种非原始数据类型,用于存储相同数据类型的值。在Java中,矩阵实际上就是一个多维数组,它表示多行和多列。

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

让我们深入这篇文章,了解如何使用Java编程语言完成这个任务。

一些实例

实例-1

给定矩阵 =

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

  • 第二列最大的元素是28

  • 第三列最大的元素是29

  • 第一列最小的元素是21

  • 第二列最小的元素是22

  • 第三列最小的元素是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
  • 第一列中最大的元素是7

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

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

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

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

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

步骤

步骤-1:(使用嵌套for循环)

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

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

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

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

  • 步骤5 - 将结果作为输出打印出来。

步骤2:(使用流API)

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

  • 步骤2 - 获取列数。

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

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

  • 步骤5 - 将结果作为输出打印出来。

语法

在Java中,Matrix.length() 方法返回给定矩阵的大小。

以下是该方法的语法 −

inputMatrix.lenght

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

Arrays.stream(matrix) 将二维整数数组 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编程语言探讨了在矩阵的每一列中寻找最大和最小元素的不同方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程