Java程式:將矩陣向右旋轉K次


陣列是一種線性資料結構,用於儲存具有相似資料型別的元素組。它以順序方式儲存資料。當我們建立二維陣列(即行和列)時,我們稱之為矩陣。

在本文中,我們將建立一個MxN矩陣,並嘗試將其向右旋轉K次。這裡,“M”和“N”分別是行和列的大小。“K”是我們要旋轉矩陣的次數。

矩陣向右旋轉

讓我們透過以下視覺表示來理解什麼是矩陣旋轉:

示例1

當我們將矩陣旋轉1次:

示例2

當我們將矩陣旋轉2次:

從上圖中我們可以看到,當我們將矩陣向右旋轉1次時,第一列移到第2個位置;當我們將矩陣向右旋轉2次時,第一列移到第3個位置。

矩陣語法

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迴圈,第一個迴圈將執行到行的size,並且在每次迭代中,它會將矩陣最後一列的值儲存到“temp”變數中。第二個for迴圈將獲取剩餘的列值並將其向右移動。

  • 步驟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次。

更新於:2023年5月2日

471 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告