【发布时间】:2014-09-17 09:50:55
【问题描述】:
所以我在这里的循环中嵌入了一个循环:
int a,b,n;
for (a = 1; a <=n; a++) {
for (b = 0; b < n; b+=a)
cout << "hey" << endl;
}
n 是 2 的幂
我正在尝试了解如何计算其时间复杂度,但是我无法为此计算出 Big-theta 符号。
我知道外循环在 O(n) 时间内运行,但由于 b+=a,我不确定内循环。我知道如果我有两个循环的时间,我可以将它们相乘以获得函数的 Big-theta 时间,但我不确定内部循环的运行时间。
当我插入样本 n(即 2、4、8、16)时,内部循环分别循环 3、9、24、61 次。我看不出这些值是如何相关的。
编辑:
好的,我明白你在说什么,但我正在尝试将它与这个函数进行比较。这个功能的时间是什么时候?然后我可以比较两者的速度:
int a,b,n;
int z = 1;
for (a = 0; a <n; a++) {
for (b = 0; b < n; b=b+z)
cout << "hey" << endl;
z = z * 2;
}
【问题讨论】:
标签: complexity-theory time-complexity big-theta