反向数组顺序

2022-09-02 02:13:07

我试图颠倒Java中数组的顺序。
在 O(n) 中使用最少的内存量执行此操作的最有效方法是什么?
无需用代码回答,伪代码就可以了。
这是我的思考过程:

  create a new temp array //I think this is a waste of memory, 
                          //but I am not sure if there's a better way
 grab elements from the end of the original array -decrement this variable
 insert element in beginning of temp array -increment this variable
then make the original array point to the temp array? //I am not sure 
            //if I can do this in java; so let's say the 
            //original array is Object[] arr; and the temp array is 
            //Object[] temp. Can I do temp = arr; ?

有没有更好更有效的方法可以做到这一点,也许不使用临时数组?最后,假设数组中没有空值,因此一切都可以正常工作。谢谢

编辑:不,这不是家庭作业。


答案 1

如果它是一个 Object 数组,那么它将使用恒定的内存和线性时间来完成这项工作 - 不需要临时数组。Collections.reverse(Arrays.asList(array))


答案 2

使用单个临时元素。

int array[SIZE];
int temp;

for (int i = 0; i < SIZE/2; i++)
  {
     temp = array[i];
     array[i] = array[SIZE-1 - i];
     array[SIZE-1 - i] = temp;
  }