Java 陣列右旋轉的反轉演算法程式


陣列是一種線性資料結構,用於儲存一組具有相同資料型別元素。它以順序方式儲存資料。一旦建立陣列,我們就無法更改其大小,即它可以儲存固定數量的元素。

本文將幫助您瞭解反轉演算法,並且我們將建立一個 Java 程式,在其中建立陣列並透過應用反轉演算法執行右旋轉。

陣列的右旋轉

讓我們瞭解陣列上下文中右旋轉的含義。

在陣列的右旋轉中,我們只需將陣列的元素向右移動,直到指定的旋轉次數。

示例 1

示例 2

在上面的示例中,當我們將陣列旋轉 2 次時,第 0 位的元素將從第 2 位開始向後移動,最後 2 個元素將由前兩個位置填充。

當我們將陣列旋轉 4 次時,第 0 位的元素將從第 4 位開始向後移動。

宣告陣列的語法

Data_Type nameOfarray[]; 
// declaration
Or,
// declaration with size
Data_Type nameOfarray[] = new Data_Type[sizeofarray]; 

我們可以在程式中使用以上任何一種語法。

反轉演算法

反轉演算法的方法如下:

  • 步驟 1 - 首先,我們將給定陣列從第一個索引反轉到最後一個索引。

  • 步驟 2 - 繼續前進,我們將給定陣列從第一個索引反轉到 rt – 1,其中 rt 是所需的旋轉次數。

  • 步驟 3 - 在最後一步,我們將反轉其餘陣列,即從 rt 到最後一個索引。

請注意,為了移動陣列的元素,我們將執行它們之間的交換。

使用反轉演算法進行右旋轉的程式

我們將把我們的邏輯放在使用者定義的方法中。讓我們討論如何建立使用者定義的方法。

語法

accessSpecifier nonAccessModifier return_Type nameOfmethod(Parameters) {
   // your code will come here
}
  • 訪問修飾符 - 用於設定方法的可訪問性。它可以是 public、protected、default 和 private。

  • 非訪問修飾符 - 顯示方法的其他功能或行為,例如 static 和 final。

  • 返回型別 - 方法將返回的資料型別。當方法不返回任何內容時,我們使用 void 關鍵字。

  • 方法名稱 - 方法的名稱。

  • 引數 - 包含變數名稱後跟資料型別。

示例

public class Rotation {
   public void rev(int rot_arr[], int first, int last) {
      while(first < last) {
         int temp = rot_arr[first];
         rot_arr[first] = rot_arr[last];
         rot_arr[last] = temp;
         first++;
         last--;
      }
   }
   public int[] rotates(int rot_arr[], int rt) {
      rt = rt % rot_arr.length;
      rev(rot_arr, 0, rot_arr.length - 1);
      rev(rot_arr, 0, rt - 1);
      rev(rot_arr, rt, rot_arr.length - 1);
      return rot_arr;
   }
   public static void main(String[] args) {
      Rotation obj = new Rotation(); 
      int rot_arr[] = {5, 8, 2, 4, 7, 1};
      int rt = 4;
      System.out.print(" The given array is: ");
      for(int i = 0; i < rot_arr.length; i++) {
         System.out.print(rot_arr[i] + " ");
      }
      obj.rotates(rot_arr, rt);
      System.out.println();
      System.out.print(" The given array after right rotation is: ");
      for(int i = 0; i < rot_arr.length; i++) {
         System.out.print(rot_arr[i] + " ");
      }
   }
}

輸出

 The given array is: 5 8 2 4 7 1 
 The given array after right rotation is: 2 4 7 1 5 8 

在上面的程式碼中,我們建立了一個類“Rotation”,在這個類中,我們使用了兩個帶引數的方法“rev”以及 3 個引數和“rotates”以及 2 個引數。“rev”方法用於交換元素,“rotates”用於應用反轉演算法的邏輯。在 main() 方法中,我們建立了類“Rotation”的一個物件“obj”,並使用此物件,我們用兩個引數呼叫了“rotates”方法。

結論

在本文中,我們瞭解了什麼是右旋轉,並討論了反轉演算法。我們使用反轉演算法建立了一個用於陣列右旋轉的 Java 程式。

更新於: 2023 年 5 月 2 日

157 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.