在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编程语言查找矩阵每一列中的最大值和最小值的各种方法。