Big o 使用天花板/地板功能查找步长计数功能
我在一本教科书中遇到了一个挑战性的问题,而我在这本教科书上遇到了麻烦。我需要找到以n为单位的步长计数函数,它计算打印过程被调用的次数。下面是伪代码Big o 使用天花板/地板功能查找步长计数功能,big-o,Big O,我在一本教科书中遇到了一个挑战性的问题,而我在这本教科书上遇到了麻烦。我需要找到以n为单位的步长计数函数,它计算打印过程被调用的次数。下面是伪代码 function EXAMPLE( some positive int n ) i <- 1 while i <= n do i <- i * 2 j <- 1 while j <= i do j <- j + 1 print("som
function EXAMPLE( some positive int n )
i <- 1
while i <= n do
i <- i * 2
j <- 1
while j <= i do
j <- j + 1
print("something")
我确信,在第一个while循环中,以某种方式涉及了带有n的天花板/地板功能,但不确定如何从那里开始。感谢您的帮助。内部循环:
j
从1增加到i
——运行i
次
外循环:经典对数循环i
以二的幂增加,直到它大于或等于n
所以你的猜测是正确的。请注意,i
在内环之前而不是之后加倍;这会使通话次数增加一倍。调用print
的总次数为:
测试值:
n T(n)
----------
1 2
2 6
3 6
4 14
5 14
6 14
7 14
8 30
9 30
10 30
...
由于楼层操作员的原因,T(n)
仅在n
达到下一个2次幂时增加
n T(n)
----------
1 2
2 6
3 6
4 14
5 14
6 14
7 14
8 30
9 30
10 30
...