簡體   English   中英

如何確定哪種算法對反轉數組更有效

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

我試圖提高自己對算法的了解。

所以我試圖反轉 integer 個值的數組。

這是我的解決方案。

     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;

}

一方面,您的算法需要的 memory 是另一個算法的兩倍。 由於創建的是數組的副本,如果數組長度為50,則需要再預留50個memory地址。 但是,另一個解決方案只需要保留 1 個 memory 地址(用於 1 個輔助int ),而不管原始數組的長度如何。

另一方面,您的算法迭代數組的所有元素,而另一個只需要迭代到中點。 理論上,這兩種解決方案具有相同的效率階數: O(n) ,但實際上另一種解決方案的迭代次數較少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM