反转数组Java程序

时间:2020-01-09 10:35:37  来源:igfitidea点击:

在本文中,我们将介绍如何反转Java数组。尽管很容易采用另一个数组并开始将元素从原始数组的最后一个索引到第一个索引存储到此新数组中,以获取反向数组,但是这种方法意味着使用辅助数据结构,即一个新数组来存储反向数组元素使该方法的空间复杂度为O(n)。

使用就地算法意味着不使用额外的空间,并且输入数据结构本身提供的空间用于修改元素以获取输出。因此,就地反转数组的Java程序将不会使用任何其他数组,也不会在原始数组中交换元素以获取反转数组作为输出。

Java程序反转数组

这里要注意的一件事是,我们不需要迭代整个数组,对于大小为n的数组,我们只需要迭代n / 2个数组。由于在每个迭代中交换了第一个和最后一个元素,第二个和倒数第二个等等,因此在到达中间元素时,该数组已经反转。

import java.util.Arrays;

public class ArrayReverseInplace {
  public static void main(String[] args) {
    int[] arr = {61, 34, 10, 0, 15, 112, 53, 78, 39, 68};
    reverseArray(arr);
  }

  static void reverseArray(int[] arr) {
    int n = arr.length;
    int temp;
    // Iterate till array length/2
    for (int i = 0; i < n / 2; i++) { 
      temp = arr[i]; 
      // Swapping
      arr[i] = arr[n - i - 1]; 
      arr[n - i - 1] = temp; 
    } 
    System.out.println("Reversed Array- " + Arrays.toString(arr));
  }
}

输出:

Reversed Array- [68, 39, 78, 53, 112, 15, 0, 10, 34, 61]

如我们在Java程序中所看到的,在原地反转数组时,相同的输入数组空间用于进行反转,仅所需的额外空间用于所使用的辅助变量。