簡體   English   中英

算法的復雜性

[英]Complexity of an algorithm

我正在研究測試並看到了這個問題,所以我做了以下,是否正確?

while循環運行在O(log3n)。

for循環運行在大約O((n-(某些數學))* log2n)因為我有一個線性的減號,我說整個方法運行在O(nlogn),除非我錯了,它是就像是

O((n-(n / log3n))* log2n)< - 不完全但非常,無法弄明白。

這里是負線性還是沒有? 如果不是什么是正確的bigO?

public void foo (int n, int m)
{
    int i = m;
    while (i>100)
     i = i/3;
    for (int k=i; k>=0; k--)
    {
        for (int j=1; j<n; j*=2)
         System.out.print(k + "\t" + j);
        System.out.println();
    }
}

while循環以O(logm)運行。

在while循環結束后, i <= 100,所以下一個for循環最多運行100次。

對於外循環的每次迭代,內循環將運行O(logn)次。 所以總時間是O(logm + 100*logn) = O(logm + logn)

第一個while循環在O(100*log_3(m)) 這應該很容易看到。

對於外部for循環,請注意i最多為100(因為之前的while循環),而內循環為O(100*log_2(n)) ,因此總漸近極限為O(log_3(m) + log_2(n))

暫無
暫無

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

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