你能解決這個問題嗎:這個演算法的復雜度是多少?
for(int i=0;i<n;i )
i*=m;
uj5u.com熱心網友回復:
考慮i每一步的順序:
0 => 0
1 => m
m 1 => m^2 m
m^2 m 1 => m^3 m^2 m
m^3 m^2 m 1 => m^4 m^3 m^2 m
所以我們可以看到 的多項式m,并且已知
m^k m^(k-1) ... 1 = m^(k 1)/(m-1) //might be checked with multiplication by (m-1)
這個運算式應該達到n,所以粗略的估計是
m^k~n
k = log(n) base m //number of steps
我們可以忽略對數基數,因此步驟數和運算元(每個回圈步驟的運算元是恒定的)估計為 O(log(n))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/325467.html
