[英]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.