Complexity theory 复杂度计算
以下各项的复杂性是什么:Complexity theory 复杂度计算,complexity-theory,Complexity Theory,以下各项的复杂性是什么: int f4(int n) { int i, j, k=1, count = 0; for(i = 0; i < n; i++) { k *= 3; for(j = k; j; j /= 2) count++; } return count; } intf4(intn) { int i,j,k=1,计数=0; 对于(i=0;i
int f4(int n)
{
int i, j, k=1, count = 0;
for(i = 0; i < n; i++)
{
k *= 3;
for(j = k; j; j /= 2)
count++;
}
return count;
}
intf4(intn)
{
int i,j,k=1,计数=0;
对于(i=0;i
我知道它是O(n^2),但是你怎么计算呢?为什么不是n*logn?有n个外部循环。在任何点,
k=3i
。有log2(k)
内部循环(因为我们在每次迭代中将j
减半)
log2(3i)=log3(3i)/log3(2)=i/(常数)
因此,内部循环的复杂性是i
。换句话说,这个程序的复杂性(但迭代次数不完全相同)与
int f4changed(int n)
{
int i,j,计数=0;
对于(i=0;i
这是
O(n2)
i=1导致(内部循环的)3次迭代(3,1,0)i=2是8(5然后是3)
i=3等于13(7+5+3) 你们所得到的是近似于a,也就是O(n2) 要了解完整性(并解释为什么迭代的确切次数无关紧要),请参考(这比你更适合其他读者,因为你似乎知道发生了什么)。日志的复杂性(Pow(3,n))~O(n)。 如果内部循环是k*=2,那么迭代次数也应该是n
在计算O(~)时,使用了最高幂项,而忽略了其他项。Log(Pow(3,n))可以限定为:
Log(Pow(2,n))看了你的其他问题后,似乎你只是想完成你当前的家庭作业。。。祝你好运:-)我正在寻找一些硬件问题的答案,我不知道自己该如何解决这些问题,但我不想让别人把它们都解决掉。我只是想了解复杂性是如何运作的。科尔曼·莱斯特森·里维斯特和斯坦。那本大白皮书。按名称索要。我可以建议为电源编写
3i
,以避免与按位异或混淆吗?
int f4changed(int n)
{
int i, j, count = 0;
for(i = 0; i < n; i++)
{
for(j = 0; j < i; j++)
{
count++;
}
}
}