Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Big o 这段代码的时间复杂度是多少,其中一个循环以几何方式增长,另一个循环以代数方式衰减?_Big O - Fatal编程技术网

Big o 这段代码的时间复杂度是多少,其中一个循环以几何方式增长,另一个循环以代数方式衰减?

Big o 这段代码的时间复杂度是多少,其中一个循环以几何方式增长,另一个循环以代数方式衰减?,big-o,Big O,我有一个猜测,但我不确定 这就是问题所在: for (a = 1 ; a<n ; a= 2*a) do { for (b=n; b > 0; b=b-a) do { } } (a=1;a0;b=b-a)do的{ } } 这是我关于stackoverflow的第一个问题,所以我希望格式是正确的 非常感谢。关于大O符号的推理,有一条有用的格言如下: 当有疑问时,从内到外工作 更具体地说,如果您试图了解循环嵌套的复杂性,请从最内部的循环开始,并用一个简单的语句来替换

我有一个猜测,但我不确定

这就是问题所在:

for (a = 1 ; a<n ; a= 2*a) do {
     for (b=n; b > 0; b=b-a) do {
     }
}
(a=1;a0;b=b-a)do的
{
}
}
这是我关于stackoverflow的第一个问题,所以我希望格式是正确的


非常感谢。

关于大O符号的推理,有一条有用的格言如下:

当有疑问时,从内到外工作

更具体地说,如果您试图了解循环嵌套的复杂性,请从最内部的循环开始,并用一个简单的语句来替换它,该语句总结所做的工作量

在您的情况下,您有以下循环:

for (a = 1 ; a<n ; a= 2*a) do {
     for (b=n; b > 0; b=b-a) do {

     }
}
这个循环将运行多少次?我们从
b
开始,等于
n
,每次迭代
b
减少
a
。这意味着这个循环的迭代次数大约是
n
/
a
,因此这个循环的复杂性是Θ(n/a)。因此,我们可以用“doΘ(n/a)work”的效果来替换内环,以获得更简单的结构:

for (a = 1 ; a<n ; a= 2*a) do {
     do Θ(n / a) work;
}

for(a=1;a更多的是描述复杂性和可伸缩性,而不是实际的运行时。对不起,我指的是复杂性。但是感谢您的注意和回复。您是指
b=b-I
,还是
b=b-a
?(从“35分钟前询问”)b=b-a,谢谢。
for (a = 1 ; a<n ; a= 2*a) do {
     do Θ(n / a) work;
}