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 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告