我有,在以下的方式使用Arrays.sort(char[])
一個代碼陣列分析的:性能使用Arrays.sort
void arrayAnalysis(String[] array){
for(int a=0; a<array.length;a++){
char[] letters = array[a].toCharArray();
Arrays.sort(letters);
...
for(int b=a+1; b<array.length;b++){
char[] letters2 = array[b].toCharArray();
Arrays.sort(letters2);
if(Arrays.equals(letters, letters2)
print("equal");
}
}
}
在這種情況下,n是等於陣列的大小。由於嵌套for循環,性能自動爲O(n^2)。但是,我認爲Arrays.sort(帶有O(nlog(n)))也會影響性能並使其比O(n^2)更糟。這個想法是否正確?
會最終表現爲O(N * n日誌(N)*(N * n日誌(n))的還是我的路要走
感謝
編輯:??我要補充的是,雖然n與數組大小有關,Arrays.sort正在處理數組元素中的字母數目,這是我的混淆的一部分,如果這應該被添加到性能分析中
Edit2:低調選民留下評論,爲什麼它被認爲是一個不好的問題。
你的琴絃有多久了?這就是你的Arrays.sort大O中的'n',它與數組大小中的'n'不一樣。如果你有最大的字符串長度,Arrays.sort位被一個常量限制。 – 2012-01-31 22:11:06
字符串大小沒有限制。 – arin 2012-01-31 22:23:08
然後你的複雜度估計將不僅取決於'n',還取決於字符串的大小。下面的答案很好。 – 2012-01-31 22:27:36