这个算法的复杂度是多少?
What is complexity of this algorithm?
你能解决这个问题吗:
这个算法的复杂度是多少?
for(int i=0;i<n;i++)
i*=m;
在每一步考虑 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))
你能解决这个问题吗: 这个算法的复杂度是多少?
for(int i=0;i<n;i++)
i*=m;
在每一步考虑 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))