![](/img/trans.png)
[英]Worst Case and Best Case Run-time Complexity of Recurrence Relation T(n) = 2T(n/2) + T(n-1) + constant
[英]Why is the worst case time complexity of this simple algorithm T(n/2) +1 as opposed to n^2+T(n-1)?
漸近時間復雜度正在n
大。 在您的示例中,由於問題指定k
是固定的,因此唯一相關的復雜性是最后一個。 請參閱Wikipedia正式定義 ,具體如下:
當n
增長到無窮大時,主導T(n) = T(n / 2) + 1
的遞歸。 您也可以使用形式定義證明這一點,基本上選擇x_0 = 10 * k
並顯示使用前兩種情況可以找到有限M
應該清楚log(n)
和n^2
滿足定義,因此更緊密的約束是漸近復雜度。
O(f(n))是什么意思? 這意味着時間最多為c * f(n),對於某些未知且可能很大的c。
kevmo聲稱O(log2 n)的復雜性。 那么,你可以檢查n≤10k的所有值,並讓T(n)的最大值為X.X可能相當大(在這種情況下約為167 k ^ 3,我認為,但它實際上並不重要)。 對於較大的n,所需時間最多為X + log2(n)。 選擇c = X,這總是小於c * log2(n)。
當然,人們通常認為O(log n)算法會很快,而且如果k = 10,000,這個算法肯定不會。 所以你也學會了O符號必須小心處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.