Java 数组的反转算法进行右旋

Java 数组的反转算法进行右旋

数组是一种线性数据结构,用于存储具有相似数据类型的元素组。它以顺序方式存储数据。一旦我们创建了一个数组,我们就不能改变其大小,也就是说它只能存储固定数量的元素。

这篇文章将帮助您理解反转算法,并且我们将创建一个Java程序,在该程序中,我们创建一个数组,并通过应用反转算法来执行右旋。

数组的右旋

让我们在数组的上下文中理解右旋的概念。

在数组的右旋中,我们只需将数组的元素向右移动指定的旋转次数即可。

示例1

Java 数组的反转算法进行右旋

示例2

Java 数组的反转算法进行右旋

在上面的示例中,当我们将数组旋转2次时,从第0个位置开始的元素会被移动到第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
}
  • accessSpecifier − 它用于设置方法的可访问性。可以是public、protected、default和private。

  • nonAccessModifier − 显示方法的额外功能或行为,例如static和final。

  • return_Type − 方法将返回的数据类型。当方法不返回任何内容时,我们使用void关键字。

  • nameOfmethod − 方法的名称。

  • parameters − 包含变量名称后跟数据类型。

示例

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”和”rotates”。”rev”方法用于交换元素,”rotates”方法用于应用反转算法的逻辑。在main()方法中,我们创建了一个名为”obj”的”Rotation”类的对象,并使用该对象调用了带有两个参数的”rotates”方法。

结论

在本文中,我们了解了右旋转的概念,并讨论了反转算法。我们使用反转算法编写了一个Java程序来实现数组的右旋转。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程