以下是Java中的反向数组实现。我从逻辑上讲解了它,我觉得它应该可以工作。
public static int[] reverseArray(int[] arr){
int temp = 0;
int[] newArr;
newArr = Arrays.copyOf(arr, arr.length);
for (int i = 0; i < arr.length - 1; i++){
temp = newArr[i];
newArr[i] = newArr[arr.length - 1 - i];
newArr[arr.length - 1 - i] = temp;
}
return newArr;
}
我传入数组[1、2、3、4、5]它仅返回第一个到最后一个交换给我的信息。返回[5,2,3,4,1]
您必须循环直到arr.length/2
,而不是循环整个数组。循环遍历整个数组将使您的程序执行以下操作-
arr.length/2
时,所有元素已被交换相互转换,并且您的Array也已反转。 arr.length - 1
时,您的Array将恢复为原来的原始格式。到达arr.length/2
时只需停止循环,程序将正常运行。因此,您在reverseArray
函数中的for循环应如下所示:
for (int i = 0; i < arr.length/2 ; i++)
您两次交换元素。
在您的示例中,当i为1时,交换元素1和3。然后,当i为3时,交换元素3和1,有效地将它们放回原来的位置。