簡體   English   中英

將主定理應用於T(n)= T(n / 2)+ n

[英]Apply master theorem on T(n) = T(n/2) + n

我只是在嘗試掌握定理,而在嘗試評估T(n)= T(n / 2)+ n時有些困惑。 使用Master定理,答案為O(n)。

但是只需執行以下代碼:

fun(n)
{
    if(n == 1)
        return ;
    for(int i=1;i<=n;i++)
    {
        printf("*");
    }
    fun(n/2);
}

上述代碼的遞歸方程為T(n)= T(n / 2)+ n。 因此,上述程序的時間復雜度必須為O(n)。

但是如果從邏輯上考慮,程序運行的次數為:n + n / 2 + n / 4 + n / 8 + ...... = nlogn。 因此,從邏輯上說,上述程序的時間復雜度必須為O(nlogn)。

我現在很困惑。 有人可以幫我解決我做錯的地方嗎?

不,該系列的計算結果為2n。

n + n / 2 + n / 4 + n / 8 + ...... = 2n

但是,如果您有T(n)= 2T(n / 2)+ n,那么它將是O(n log n)

暫無
暫無

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

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