用于数组旋转的 Java 程序
数组是一种线性数据结构,用于存储具有相似数据类型的一组元素。它以顺序方式存储数据。一旦我们创建了一个数组,我们就不能改变它的大小,即它可以存储固定数量的元素。数组具有广泛的应用和用例。此外,我们可以对数组执行许多操作。本文将帮助您了解数组的基础知识,此外,我们将编写 Java 程序对数组执行左右旋转操作。
用于数组旋转的 Java 程序
首先,让我们在数组上下文中了解左右旋转的术语。
在数组的右旋转中,我们只需将数组的元素向右移动,直到指定的位置数,在左旋转的情况下反之亦然,如下例所示。
实例

声明数组的语法
Data_Type nameOfarray[]; // 声明 或者, // 带大小的声明 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 − 将复制元素的数组。
长度 − 要复制的元素数量。
示例 1
在下面的示例中,我们将从第二个索引开始将数组向左旋转两次。
方法
首先,定义一个方法以及两个参数,它们接受一个整数和索引作为参数。
在此方法中,创建一个临时数组来存储旋转后的元素。然后,使用"arraycopy()"方法从指定索引将原始数组复制到临时数组。
再次使用"arraycopy()"方法将原始数组的剩余元素复制到临时数组,以便元素向左移动。现在,再次使用 'arraycopy()' 方法将所有旋转元素从临时数组复制到原始数组。
在 main() 方法中,声明并初始化一个整数数组,然后初始化一个整数变量以指定我们要旋转的索引。然后,调用用户定义的方法来旋转数组。
import java.util.Arrays;
public class ArrayRotationleft {
// 用户定义方法来旋转给定的数组
public static void rotateArray(int[] arr, int rotateBy) {
int length = arr.length;
// 计算有效旋转值
int rotation = rotateBy % length;
// 创建一个临时数组来存储旋转后的元素
int[] temp = new int[rotation];
// 将 rotateBy 之前的元素复制到临时数组中
System.arraycopy(arr, 0, temp, 0, rotation);
// 将剩余元素向左移动
System.arraycopy(arr, rotation, arr, 0, length - rotation);
// 将旋转后的元素从临时数组复制到原始数组中
System.arraycopy(temp, 0, arr, length - rotation, rotation);
}
public static void main(String[] args) {
// 声明并初始化一个数组
int[] arr = { 5, 7, 89, 91, 34, 21, 11, 0 };
int rotateBy = 2;
System.out.println("原始数组如下: ");
// for-each 循环打印原始数组
for(int print : arr) {
System.out.print(print + " ");
}
System.out.println();
System.out.println("左旋转后的数组: ");
// 调用方法旋转数组
rotateArray(arr, rotateBy);
// for-each 循环打印旋转后的数组
for(int print : arr) {
System.out.print(print + " ");
}
}
}
输出
原始数组如下: 5 7 89 91 34 21 11 0 左旋转后的数组: 89 91 34 21 11 0 5 7
示例 2
要执行右旋转,我们需要从要旋转数组的位置复制元素,而不是从第 0 个索引复制原始数组。
import java.util.Arrays;
public class ArrayRotationright {
public static void main(String[] args) {
// 声明并初始化一个数组
int[] arr = { 5, 7, 89, 91, 34, 21, 11, 0 };
int rotateBy = 2;
System.out.println("原始数组如下: ");
// for-each 循环打印原始数组
for(int print : arr) {
System.out.print(print + " ");
}
System.out.println();
System.out.println("右旋转后的数组: ");
// 调用方法旋转数组
rotateArray(arr, rotateBy);
// for-each 循环打印旋转后的数组
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;
// 计算有效旋转值
int rotation = rotateBy % length;
// 创建一个临时数组来存储旋转后的元素
int[] temp = new int[rotation];
// 将直到 rotateBy 的元素复制到临时数组中
System.arraycopy(arr, length - rotation, temp, 0, rotation);
// 将剩余元素向右移动
System.arraycopy(arr, 0, arr, rotation, length - rotation);
// 将旋转后的元素从临时数组复制到原始数组中
System.arraycopy(temp, 0, arr, 0, rotation);
}
}
输出
原始数组如下: 5 7 89 91 34 21 11 0 右旋转后的数组: 11 0 5 7 89 91 34 21
结论
在本文中,我们了解了什么是数组,并讨论了两个 Java 程序来执行数组的右旋转和左旋转。此外,我们发现了 arraycopy() 方法,该方法在将元素从一个数组复制到另一个数组时非常有用。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

