Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Algorithm 给定循环O(logn)或O(n)的时间复杂度_Algorithm_Time Complexity_Big O_Complexity Theory - Fatal编程技术网

Algorithm 给定循环O(logn)或O(n)的时间复杂度

Algorithm 给定循环O(logn)或O(n)的时间复杂度,algorithm,time-complexity,big-o,complexity-theory,Algorithm,Time Complexity,Big O,Complexity Theory,我们和我的朋友讨论了循环,我认为第一个循环是Ologn,第二个循环是On。然而,对于后者,他说它也不是开着的 你能解释一下吗?简短回答: 这两个循环都是logn,因为对于输入n,两个循环都将运行logn次 由于for循环中的i*=2,第一个循环运行logn次,而第二个循环运行logn次,因为for循环中的上限直接设置为该值 详细说明: Big-O表示函数的增长率。第二个循环是你感到困惑的一个,实际上是两个循环中比较简单的一个。您可以直接看到,对于任何输入n,函数始终只需要与Log n成比例的时间

我们和我的朋友讨论了循环,我认为第一个循环是Ologn,第二个循环是On。然而,对于后者,他说它也不是开着的

你能解释一下吗?

简短回答:

这两个循环都是logn,因为对于输入n,两个循环都将运行logn次

由于for循环中的i*=2,第一个循环运行logn次,而第二个循环运行logn次,因为for循环中的上限直接设置为该值

详细说明:

Big-O表示函数的增长率。第二个循环是你感到困惑的一个,实际上是两个循环中比较简单的一个。您可以直接看到,对于任何输入n,函数始终只需要与Log n成比例的时间

因此,第二个循环的增长率与对数n成正比,换句话说,等于对数n。

简单回答:

这两个循环都是logn,因为对于输入n,两个循环都将运行logn次

由于for循环中的i*=2,第一个循环运行logn次,而第二个循环运行logn次,因为for循环中的上限直接设置为该值

详细说明:

Big-O表示函数的增长率。第二个循环是你感到困惑的一个,实际上是两个循环中比较简单的一个。您可以直接看到,对于任何输入n,函数始终只需要与Log n成比例的时间


因此,第二个循环的增长率与对数n成正比,或者换句话说,等于对数n。

如果有疑问,只需用一些值替换n值,然后干运行两个循环

以n=100为例

//回路1


对于int i=1;i如果有疑问,只需用一些值替换n的值,并对两个循环进行干运行

以n=100为例

//回路1


对于int i=1;i第一个循环将迭代到无穷大,因为i=0。你为什么认为后者是开的?@snr:除非logn是不与logn成比例的,否则这是一个线性循环,但logn是上界,所以logn迭代。但上限本身是logn…@WillemVanOnsem illimunating回答现在看到了吗,谢谢sir,第一个循环将迭代到无穷大,因为i=0。你为什么认为后者是开启的?@snr:除非logn不是与logn成比例的,否则这是一个线性循环,但以logn为上界,所以logn迭代。但上限本身是logn…@WillemVanOnsem illimunating回答现在看到了,谢谢先生
//loop1
for (int i = 1; i <= n; i*=2) { }
//loop2
for (int i = 1; i <= logn; i++) { }