python – 这个2次幂函数的“大O”
作者:互联网
以下功能的“大O”是什么?我的假设是它是O(log(n)),但我想仔细检查.该函数简单地确定其参数是否为2的幂.
def pow_of_2(x):
a = math.log(x, 2)
if a == math.floor(a):
return True
else:
return False
解决方法:
函数的Big-O不是恒定时间.
函数的Big-O将与函数math.log的Big-O相同.这基本上取决于功能的实现. (math.floor函数可以在恒定时间内实现).
对数函数通常使用泰勒级数展开来计算,并且是O(M(n)* n ^ 0.5),其中M(n)是乘以两个n位数的复杂度.
有关这方面的更多信息,请查看此link.
注意:如果要检查数字是否为2的幂,您需要做的就是使用二进制算法进行以下检查
def pow_of_2(x):
return((x&(x – 1))== 0)
基本上,您需要检查二进制表示中是否将一位设置为1.有关其工作原理的更详细说明是here.
标签:python,big-o,time-complexity 来源: https://codeday.me/bug/20190829/1760748.html