簡體   English   中英

迭代算法的時間復雜度?

[英]Time complexity of the iterative algorithm?

這是算法:我認為其時間復雜度為O(nlogn),但我不確定

k=1;
while (k<=n) do      
    j=1;
    while (j<=k) do        
        sum=sum+1;
        j=j+1;
    k=k*2;

第一次的內部循環執行一次迭代,第二次執行兩次。 只要序列小於或等於n ,該序列就類似於1,2,4,4,8,16,32,...。 該序列可以具有Θ(log(n))元素,但其總和為Θ(n) 這是因為

1 + 2 + 4 + ... + 2 ^ k = 2 * 2 ^ k-1

我們知道n/2 < 2^k <= n 因此,內部循環執行了Θ(n)次,每次內部循環執行都需要恆定數量的指令。

的代碼的其余部分只是log(n)分配給j = 1log(n)的一倍k

因此,該算法的時間復雜度為Θ(n)

// code                 | max times executed
k=1;                    | 1
while (k<=n) do         | log n
    j=1;                | log n
    while (j<=k) do     | log n * n
        sum=sum+1;      | log n * n
        j=j+1;          | log n * n
    k=k*2;              | log n

因此,O復雜度似乎為n log n。

暫無
暫無

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

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