algorithm - 带有 if-else 语句的 for 循环的大哦
问题描述
我想知道为什么以下代码 O(n^4) 而不是 O(n^5) 的 Big-Oh 复杂度最严格:
int sum = 0;
for(int i=1; i<n ; i++){ //O(n)
for(int j=1; j<i*i; j++){ // O(n^2)
if(j%i == 0)
for(int k=0; k<j; k++) //O(n^2)
sum++;
}
}
谁能帮我这个?谢谢!
解决方案
它回到最里面的if
状态。j%i == 0
只对 for而言,第二个循环将运行的j = {i, 2*i, 3*i, ..., i * i}
只是时间。因此,紧复杂度为。i
O(i^2)
O(n^4)
推荐阅读
- google-cloud-functions - 模式对象属性验证
- firebase - 使用 TabBarView 和 DefaultTabController 时的 initState()
- c++ - Docker/C++ 问题 - 编译错误 /usr/bin/ld: cannot open output file server: Is a directory
- c# - 如何比较两个 BitArray 并返回第二个数组的差异索引
- javascript - 如何将所选项目传递给 api vujes
- javascript - 如何替换动态未知的动态变量
- pandas - 将每周时间序列重塑为季节性数据框
- shell - 在unix中将多行转换为单行
- python-3.x - Python Pandas : Extend operation of a column if a condition matches
- php - 如何将while循环数据存储在字符串变量中,然后在php的邮件函数中使用它