在 Java 中查找矩阵中已排序行的数量?

javaobject oriented programmingprogramming

矩阵不过是二维矩形布局中排列的数据元素的集合。在 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 编程语言查找矩阵中已排序行数的不同方法。


相关文章