我試圖在演算法方面提高自己。
所以我試圖反轉一個整數值陣列。
這是我的解決方案。
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;
}
uj5u.com熱心網友回復:
一方面,你的演算法需要兩倍于另一個的記憶體。由于您正在創建陣列的副本,如果陣列的長度為 50,則需要多保留 50 個記憶體地址。但是,另一種解決方案只需要保留 1 個記憶體地址(用于 1 個 auxiliar int),而不管原始陣列的長度如何。
另一方面,您的演算法迭代陣列的所有元素,而另一個只需要迭代到中點。從理論上講,兩種解決方案的效率順序相同:O(n)但實際上,另一種解決方案的迭代次數更少。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/442746.html
