如何确定哪种算法对反转数组更有效

How can I decide which algorithm is more efficent for reverse an array

我正在努力提高自己对算法的了解。

所以我尝试反转整数值数组。

这是我的解决方案。

     static  int[] reverseArray(int[] arr){

    int[] newArr =new int[arr.length];

    for (int i = arr.length-1, j = 0; i>=0; i-- , j++){

        newArr[j] = arr[i];

    }

    return newArr;

}

这就是我在网站上看到的答案。所以我的头脑有点混乱。在我看来,我的解决方案更简单、更好。我不明白为什么我们必须将它一分为二,例如我认为没有必要。那么任何人都可以帮助我解决我的问题吗?

 for(int i = 0; i < my_array1.length / 2; i++)

{

int temp = my_array1[i];
my_array1[i] = my_array1[my_array1.length - i - 1];
my_array1[my_array1.length - i - 1] = temp;

}

一方面,您的算法需要的内存是另一个算法的两倍。由于创建的是数组的副本,如果数组的长度为50,则需要多预留50个内存地址。然而,另一种解决方案只需要保留 1 个内存地址(用于 1 个辅助 int),而不管原始数组的长度。

另一方面,你的算法迭代数组的所有元素,而另一个只需要迭代到中点。 理论上,两种解决方案的效率顺序相同:O(n) 但实际上,另一种解决方案的迭代次数较少。