在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编程语言查找矩阵每一列中的最大值和最小值的各种方法。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP