在 Java 中查找矩阵中已排序行的数量?
javaobject oriented programmingprogramming更新于 2025/3/4 8:44:17
矩阵不过是二维矩形布局中排列的数据元素的集合。在 Java 中,可以将具有两个维度的数组视为矩阵。
根据问题陈述,任务是计算矩阵中按严格递增顺序或严格递减顺序排序的所有行。
让我们深入研究这篇文章,了解如何使用 Java 编程语言完成它。
向您展示一些实例
实例 1
假设原始矩阵是{
{ 5, 6, 7, 8 ,
{ 5, 3, 1, 0 },
{ 10, 7, 4, 3 },
{ 13, 7, 8, 21 },
{ 5, 4, 11 ,22 },
{ 11, 2, 3 ,4 }
};
计算矩阵中已排序的行数后,结果索引为:
矩阵中已排序的行数:3
实例-2
假设原始矩阵为{
{ 3, 5, 7, 9 },
{ 5, 3, 1, 8 },
{ 10, 7, 4, 3 },
{ 4, 7, 8, 11 },
{ 0, 4, 11 ,22 },
{ 1, 2, 3 ,0 }
};
计算矩阵中已排序的行数后,结果索引将是:
矩阵中已排序的行数:4
算法
步骤 1 - 初始化并声明矩阵
步骤 2 - 使用 for 循环检查行的递增或递减顺序。
步骤 3 - 计算总行数。
步骤 4 - 打印结果。
多种方法
我们提供了不同方法的解决方案
通过使用矩阵的静态初始化
通过使用用户定义方法
让我们通过以下代码查看程序及其输出:一。
方法 1:使用矩阵的静态初始化
在此方法中,矩阵元素将在程序中初始化。然后根据算法,找到矩阵中已排序行的数量。
示例
public class Main {
public static void main(String arg[]){
int m = 6, n = 4; //初始化并声明矩阵
int mat[][] = {
{ 5, 6, 7, 8 },
{ 5, 3, 1, 0 },
{ 10, 7, 4, 3 },
{ 13, 7, 8, 21 },
{ 5, 4, 11 ,22 },
{ 11, 2, 3 ,4 }
};
int result = 0;
// 从左到右计数以按行数递增
for (int i = 0; i < m; i++) {
//检查是否有任何一对元素不是按递增顺序排列的。
int j;
for (j = 0; j < n - 1; j++)
if (mat[i][j + 1] <= mat[i][j])
break;
//如果循环没有中断,则当前行的所有元素都按递增顺序排列
if (j == n - 1)
//递增顺序计数
result++;
}
// 从右到左计数以按行数的递减顺序计数
for (int i = 0; i < m; i++) {
//检查是否存在任何非按降序排列的元素对。
int j;
for (j = n - 1; j > 0; j--)
if (mat[i][j - 1] <= mat[i][j])
break;
if (n > 1 && j == 0)
result++;
}
System.out.println("矩阵中排序后的行:" + result);
}
}
输出
矩阵中已排序的行数:3
方法 2:使用用户定义方法
在此方法中,矩阵元素将在程序中初始化。然后通过将矩阵作为参数传递来调用用户定义的方法,并根据算法在方法内部找到矩阵中已排序的行数。
示例
public class Main {
public static void main(String arg[]){
//初始化并声明矩阵
int m = 6, n = 4;
int mat[][] = {
{ 3, 5, 7, 9 },
{ 5, 3, 1, 8 },
{ 10, 7, 4, 3 },
{ 4, 7, 8, 11 },
{ 0, 4, 11 ,22 },
{ 1, 2, 3 ,0 }
};
//调用用户定义的方法
sort(mat, m, n);
}
// 用户定义方法
static void sort(int mat[][], int r, int c){
//初始化结果
int result = 0;
// 从左到右计数以按行数递增
for (int i = 0; i < r; i++) {
//检查是否有任何非递增顺序的元素对。
int j;
for (j = 0; j < c - 1; j++)
if (mat[i][j + 1] <= mat[i][j])
break;
//如果循环未中断,则当前行的所有元素均按递增顺序排列
if (j == c - 1)
//递增顺序计数
result++;
}
// 从右到左计数以按行数的递减顺序计数
for (int i = 0; i < r; i++) {
//检查是否有任何一对元素不是按递减顺序排列的。
int j;
for (j = c - 1; j > 0; j--)
if (mat[i][j - 1] <= mat[i][j])
break;
//如果循环没有中断,则当前行的所有元素都按递减顺序排列
if (c > 1 && j == 0)
//递减顺序计数
result++;
}
//打印结果
System.out.println("矩阵中排序后的行:" + result);
}
}
输出
矩阵中已排序的行数:4
在本文中,我们探索了使用 Java 编程语言查找矩阵中已排序行数的不同方法。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

