2009-10-17 124 views
-2

假設方法m1和m2是靜態的無效的,並通過處理Object []類型的參數來計算相同的結果。經驗上我們發現m1→T(N)= 100N和m2→T(N)= 10Nlog2N,其中時間以微秒爲單位。對於什麼尺寸的輸入,最好使用m1和m2? 所以我會用大數字m1,而我會用小數字m2?只是檢查答案。複雜性類

回答

6

您正在尋找N > 0的值,因此100N > 10N log2 N,所以這只是一個代數問題。將雙方除以10N,即得到10 > log2 N,即N < 2**10,即N < 1024。並不難 - !)

1

嗯,登錄 N的會打10的時候,N是1024,所以要根據您提供給我們的公式,你會用N <= 1024第二個和第一個爲N >= 1024。 (你在邊界上做什麼並不重要 - 它們將是平等的。)

但是,從實際的角度來看,你應該很可能選擇一個並保持那一個。你是否期望非常大的輸入或許多小輸入?這絕對是你的代碼中的瓶頸?哪一種更簡單的算法?

還有很多事情要決定哪個算法是最好的而不僅僅是給定輸入中哪個算法最快。我寧願保持一個簡單的算法,它運行的速度比一個快速但卻非常複雜的算法慢

+0

不,這是O(n log n),因爲這是最重要的複雜性。 – 2009-10-17 18:35:18

+0

當我回復你在Alex的回答中提出的評論時,是的,這是正確的。 – 2009-10-17 19:04:21