Java 将矩阵向右旋转K次

Java 将矩阵向右旋转K次

数组是一种线性数据结构,用于存储具有相似数据类型的元素组。它以顺序方式存储数据。当我们创建一个二维数组时,即行和列,我们称之为矩阵。

在本文中,我们将创建一个MxN大小的矩阵,并尝试将其向右旋转K次。这里,’M’和’N’分别是行和列的大小。’K’是我们想要旋转矩阵的次数。

向右旋转矩阵

让我们通过以下视觉表示理解矩阵旋转的含义−

示例1

当我们把矩阵旋转1次−

Java 将矩阵向右旋转K次

示例2

当我们旋转矩阵2次时

Java 将矩阵向右旋转K次

Matrix语法

Data_Type matrix_name[ row ][ column ]; 
// declaration
Or,
   // declaration with size
Data_Type matrix_name[ row ][ column ] = new Data_Type[sizeofarray]; 
Or,
   // declaration and initialization
Data_Type matrix_name[ row ][ column ] = { {values separated by comma} };

我们可以在我们的程序中使用上面任何一种语法。

步骤

让我们讨论一下我们将如何旋转给定矩阵的方法。

  • 步骤1 - 我们将创建四个整数值’row’和’column’,大小为4。第三个整数值为’K’,表示旋转次数,第四个命名为’temp’,用于临时存储值。

  • 步骤2 - 声明并初始化一个二维数组arr[][]。

  • 步骤3 - 现在,我们将使用一个while循环,循环次数为’k % col’,即旋转的次数。当我们旋转的次数大于’col’时,旋转不会影响原始数组。

  • 步骤4 - 在while循环中,我们将使用两个for循环,第一个循环将运行直到行的大小,并在每次迭代期间将矩阵的最后一列的值存储在’temp’变量中。第二个循环将获取剩余的列值并将其向右移位。

  • 步骤5 - 在第二个for循环执行完毕后,我们将在矩阵的第一列中存储’temp’变量的值。

  • 步骤6 - 当两个for循环都完成其执行后,我们将将k减1。之后,我们将检查k是否大于0。如果大于0,则再次执行for循环,并按照步骤4和5中讨论的方式工作。

在下一节中,我们将看到上述方法的实现。

将矩阵右旋转K次的程序

示例

public class Mat {
   public static void main(String[] args) {
      int row=4;
      int col=4;
      int arr[][] = {{7, 2, 1, 3}, {6, 1, 3, 7}, {4, 9, 8, 0}, {8, 0, 1, 2}};
      int k = 3 % col; // Number of rotation
      int temp;
      System.out.println("The given matrix: ");
      // loop to print matrix value
      for (int i = 0; i < row; i++) {
         for (int j = 0; j < col; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      } 
      // loop to perform matrix rotation
      while(k > 0){
         for( int i = 0; i < row; i++) {
            temp = arr[i][col-1]; 
            // storing last column value to temp
            for(int j = col-1; j > 0; j--) { 
               // reverse loop
               arr[i][j] = arr[i][j-1]; 
               // shifting column value to right
            }
            arr[i][0] = temp; 
            // storing temp value to array again
         }
         k--; // decementing k 
      }
      System.out.println("After rotating the given matrix " ); 
      // loop to print new matrix value
      for (int i = 0; i < row; i++) {
         for (int j = 0; j < col; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }   
   }
}

输出

The given matrix: 
7 2 1 3 
6 1 3 7 
4 9 8 0 
8 0 1 2 
After rotating the given matrix 
2 1 3 7 
1 3 7 6 9 8 0 4 
0 1 2 8

结论

在这篇文章中,我们了解了什么是矩阵以及如何声明和初始化它,从而可以与矩阵一起工作。此外,我们还讨论了一个Java程序,用于将一个矩阵旋转k次。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程