编程语言
首页 > 编程语言> > python – 这个2次幂函数的“大O”

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