簡體   English   中英

這3個循環的時間復雜度是多少?

[英]What is the time complexity of these 3 loops?

這段代碼的時間復雜度是多少?

let time = 0;
for(let i = 1; i <= n; i++)
{
  for(let j = 1; j <= i; j++)
  {
    for(let k = 1; k <= n*n; k += i*i)
    {
      time++
    }
  }
}

最里面的循環是O(1)還是O(n^2)

答案是O(N^2logN)

分析:

對於常量i ,最內層的循環將執行大約(N*N)/(i*i)次。 第二個循環將執行i次。 所以time++將被執行大約((N*N)/(i*i))*i = (N*N)/i次。

所以總費用將是每個i的總和。 (N*N)*(1/1+1/2+1/3....1/N) ≈ N^2logN是你的答案。

暫無
暫無

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

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