如何用Java反转数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1030)

我试图以两种方式反转数组:

1)通过创建一个非常简单的新数组:

public static int[] reverse(int[] array) {
    int[] reverseArray = new int[array.length];
    for(int i = 0; i < reverseArray.length; i++) {
        reverseArray[i] = array[array.length - i - 1];
    }
    return reverseArray;
}

2)第二种方法我得到了答案,但实际上我并不理解它,它实际上利用交换,将数组的值赋予临时变量然后更改它并将其返回到原始变量:

public static int[] reverse2(int[] array)
{
    for (int i=0; i < array.length / 2; i++)
    {   
        int temp = array[i];
        array[i] = array[array.length - i - 1];
        array[array.length - i - 1] = temp;
    }
    return array;
}
提问于
用户回答回答于

除以2只是为了让你只通过数组的前半部分,如果你交换第一个和最后一个项目,当我到达array.length时你不想再这样做。如果尺寸是均匀的,将在下半部分之前停止,如果尺寸为奇数,将在中心位置之前停止,无论如何都不需要切换

用户回答回答于

想象一下你的阵列是这样的:

[ 1 2 3 4 5 ]

发布的第二个解决方案的工作方式如下:

[ 1 2 3 4 5 ]
  ^--swap-^

[ 5 2 3 4 1 ]
    ^swp^

[ 5 4 3 2 1 ]

对于偶数个元素,会做同样的事情,只交换最里面的对:

[ 1 2 3 4 5 6 ]
  ^--swap---^

[ 6 2 3 4 5 1 ]
    ^swap-^

[ 6 5 3 4 2 1 ]
      ^-^

[ 6 5 4 3 2 1 ]

扫码关注云+社区

领取腾讯云代金券