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 程序。