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))
推荐阅读
- api - 如何在空手道中复制节点及其子节点
- html - 如何使 HTML 中的选项标记显示一列的行但从同一个表中保存另一列的值
- excel - 复制为带格式的值,而不是使用公式粘贴值
- apache-kafka - kafka 代理和客户端版本兼容性
- xpath - Google表格importxml中XPath中的多个索引
- python - Scrapy FormRequest 参数不起作用但显示所有结果
- arrays - 如何在 Ruby 中将数字与数组相加?
- javascript - 如何按索引从文件输入(多个)中删除文件
- hyperledger-fabric - hyperledger-fabric 可以在不进入docker容器的情况下获取peer节点运行状态吗?
- css - 如何编写css选择器以在给定元素之前选择元素