以下方法的时间复杂度是多少?

时间:2019-05-29 21:39:53

标签: algorithm time-complexity big-o

我试图了解如何检查时间复杂度,但无法解决此示例:

图片:

The original problem, as an image.

有人可以帮我解决它,并逐步解释如何做吗?

1 个答案:

答案 0 :(得分:3)

算法循环直到m达到0。在每次迭代中,m减半(如果是偶数)或减1(如果是奇数)。如果算法在每次迭代中仅将m减半,则将需要log(m)个步骤(在复杂性的上下文中,log()通常应以2为底)。但是,在我们的情况下,我们最多可能有两倍的迭代次数,即,如果在将偶数减半后得到一个奇数。这些奇数减1会导致创建下一个偶数。

将步数加倍是一个恒定因素,在以Big-O表示法计算复杂度时并未考虑到这一点,因此复杂度保持在O(log(n))。