Java数组旋转程序
数组是一种线性数据结构,用于存储一组具有相似数据类型的元素。它以顺序方式存储数据。一旦我们创建了一个数组,我们就无法更改其大小,也就是说,它可以存储固定数量的元素。数组具有广泛的应用和用例。此外,我们可以在数组上执行许多操作。本文将帮助您了解数组的基础知识,我们还将编写Java程序来对数组执行向右和向左旋转操作。
Java数组旋转程序
首先,让我们了解在数组上下文中向右和向左旋转的含义。
在数组的向右旋转中,我们只需将数组的元素向右移动到指定的位数,反之亦然,在向左旋转的情况下,如下例所示。
示例
声明数组的语法
Data_Type nameOfarray[]; // declaration Or, // declaration with size Data_Type nameOfarray[] = new Data_Type[sizeofarray];
我们可以在程序中使用上述任何语法。
在直接跳转到程序之前,让我们了解一下我们将要在示例程序中使用的名为“System.arraycopy()”的内置方法。
System.arraycopy()方法
java.lang.System.arraycopy()是Java System类的静态方法,用于将源数组从指定的索引复制到目标数组的指定索引。
语法
System.arraycopy(srcArray, index1, destArray, index2, length);
这里:
srcArray - 要复制的数组。
index1 - 需要复制的源数组的起始索引。
index2 - 元素将被复制到的目标数组的起始索引。
destArray - 将复制元素的数组。
length - 要复制的元素数量。
示例1
在下面的示例中,我们将数组向左旋转两次,从第二个索引开始。
方法
首先,定义一个方法以及两个参数,它们接受整数和索引作为参数。
在这个方法内部,创建一个临时数组来存储旋转后的元素。然后,使用“arraycopy()”方法将原始数组从指定的索引复制到临时数组。
再次使用“arraycopy()”方法将原始数组的剩余元素复制到临时数组,以便元素向左移动。现在,再次使用“arraycopy()”方法将所有旋转后的元素从临时数组复制到原始数组。
在main()方法中,声明并初始化一个整数数组,然后初始化一个整数变量以指定要旋转的索引。然后,调用用户定义的方法来旋转数组。
import java.util.Arrays; public class ArrayRotationleft { // user-defined method to rotate the given array public static void rotateArray(int[] arr, int rotateBy) { int length = arr.length; // Calculate the effective rotation value int rotation = rotateBy % length; // Create a temporary array to store rotated elements int[] temp = new int[rotation]; // Copy elements till the rotateBy to the temporary array System.arraycopy(arr, 0, temp, 0, rotation); // Shift the remaining elements to the left System.arraycopy(arr, rotation, arr, 0, length - rotation); // Copy the rotated elements from the temporary array to the original array System.arraycopy(temp, 0, arr, length - rotation, rotation); } public static void main(String[] args) { // declaring and initializing an array int[] arr = { 5, 7, 89, 91, 34, 21, 11, 0 }; int rotateBy = 2; System.out.println("The original array is as follows: "); // for-each loop to print original array for(int print : arr) { System.out.print(print + " "); } System.out.println(); System.out.println("The array after left rotation: "); // calling the method to rotate the array rotateArray(arr, rotateBy); // for-each loop to print rotated array for(int print : arr) { System.out.print(print + " "); } } }
输出
The original array is as follows: 5 7 89 91 34 21 11 0 The array after left rotation: 89 91 34 21 11 0 5 7
示例2
要执行向右旋转,我们需要从要旋转数组的位置复制元素,而不是从第0个索引复制原始数组。
import java.util.Arrays; public class ArrayRotationright { public static void main(String[] args) { // declaring and initializing an array int[] arr = { 5, 7, 89, 91, 34, 21, 11, 0 }; int rotateBy = 2; System.out.println("The original array is as follows: "); // for-each loop to print original array for(int print : arr) { System.out.print(print + " "); } System.out.println(); System.out.println("The array after right rotation: "); // calling the method to rotate the array rotateArray(arr, rotateBy); // for-each loop to print rotated array for(int print : arr) { System.out.print(print + " "); } } // user-defined method to rotate the given array public static void rotateArray(int[] arr, int rotateBy) { int length = arr.length; // Calculate the effective rotation value int rotation = rotateBy % length; // Create a temporary array to store rotated elements int[] temp = new int[rotation]; // Copy the elements till rotateBy to the temporary array System.arraycopy(arr, length - rotation, temp, 0, rotation); // Shift the remaining elements to the right System.arraycopy(arr, 0, arr, rotation, length - rotation); // Copy the rotated elements from the temporary array to the original array System.arraycopy(temp, 0, arr, 0, rotation); } }
输出
The original array is as follows: 5 7 89 91 34 21 11 0 The array after right rotation: 11 0 5 7 89 91 34 21
结论
在本文中,我们了解了什么是数组,并讨论了两个用于执行数组向右和向左旋转的Java程序。此外,我们还发现了arraycopy()方法,它在将元素从一个数组复制到另一个数组时非常有用。