【发布时间】:2016-09-23 09:25:07
【问题描述】:
在我坚持了几天的关于 Big O 时间复杂度分析的测试中遇到了这个问题:
下面是C代码:
if ( A > B ) {
for ( i=0; i<n^2/100; i++ ){ //1
for ( j=n^2; j>i; j-- ){ //2
A += B;}}
}
else {
for ( i=0; i<2n; i++ ){ //3
for ( j=3n; j>i; j-- ){ //4
A += B;}}
}
我的第一直觉是这个算法会有一个 O(n2) 的大 O 和嵌套的 for 循环等,但它不是一个多项选择回答。尝试手动计算每个循环迭代,但无法计算每个内部循环(2 和 4)中 i 的变化。尝试将其写为总和时也遇到了麻烦。
【问题讨论】:
-
第一个不是嵌套在
n上,而是在nsquared上。
标签: c time-complexity big-o nested-loops