这个算法给我带来麻烦,我在网上找不到任何关于处理也受外部for循环影响的while循环的资源。是否有一个复杂的过程,或者你可以从循环看它是简单的(外环= n,内环= %%%%)?感谢您的任何帮助。
答案 0 :(得分:0)
您是否听说过this issue运营商?如果a,b,n是实数,使得 n = b则log n b = a。内部循环告诉计算机,将数字j
乘以2次(我们不确切地知道这个数字是什么,我们称之为x
),这样在此之后,{{ 1}}应等于或超过j
。
在数学上,这可以写成n
解决2n > j * 2x ≥ n
:x
⇔2n/j > 2x ≥ n/j
⇔log2(2n/j) > x ≥ log2(n/j)
当log2(n/j) + 1 > x ≥ log2(n/j)
从1增加到j
时,n
会减少。从这一点开始,我将在Logarithm中解决问题,您的工作是将其转换为Big-Theta符号
由于x
是常量,因此可以省略。所以1
,总是小于x = log2(n/j)
。所以我们可以说内环的运行时间超出log2(n)
,这意味着整个算法的上限为O(log2n)
。
答案 1 :(得分:0)