是 O(n) 還是 O(n*n)?
回圈運行大約 n*n 次,但回圈變數只有一個。
我很困惑它是否是 O(n) 演算法我認為它應該是 O(n*n) 但 gfg 說它是 O(n)
有人可以幫我解答嗎??
int j=0;
for(int i=1; i<=n; )
{
if(j<i)
{
j ;
continue;
}
if(j==i)
{
i ;
j=0;
}
}
uj5u.com熱心網友回復:
這是 O(1 2 ... n n),即等差數列 1 到 n 加 n 的總和,總和為 O(n * (n 1) / 2 n) ≈ O (n2)。
uj5u.com熱心網友回復:
我認為這個回圈運行 1 2 ... n 次,因為j
需要i - 1
隨著i
增長而i
增加n
次數,并且增長次數。這給出了 O(n^2) 的時間復雜度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401017.html
下一篇:正則運算式匹配/中斷