数据结构基础(((x^2+1))^2+1)^2......时间复杂度为什么是2logN

发布于 2022-09-01 05:06:21 字数 516 浏览 11 评论 0

书上原文:

求幂运算, 要计算X^N, 如果N为偶数, 那么X^N = X^(N/2) * X^(N/2) , 如果N为奇数, 那么X^N = X^(N/2) * X^(N/2) * X.
例如: X^62次,算法将如下进行, 它只用到了9次乘法
X^3=(X^2)X, X^7=(X^3)^2X, X^15=(X^7)^2X, X^31=(X^15)^2X, X^62=(X^31)^2
显然, 所需要的乘法次数最多是2logN.

图片:
图片描述
通过这个例子和一个前辈的指明, 我总结出X^N = ((((x^2)^2+1)^2+1)^2+1)...., 但是如果通过这个求出时间复杂度为2logN?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

朦胧时间 2022-09-08 05:06:21

考虑我们的问题:$ x^n $

对于$ n\neq 1 $我们有$ x^n = (x^{\frac{n}{2}})^2 $ 若n为偶数 $x^n = (x^{\frac{n}{2}})^2 * x $ 若n为奇数.

因此 $ T(n) = T(n/2) + O(1) $

根据主定理,最后的复杂度就是 $ O(\log n) $

或者, 每次递归把把规模缩小2, 那就是 $\log n$ 层(你也可以加上取整符号..) 的递归 ($ \log n $就是求解$ 2^y = n $ 的$ y $), 每层需要最多两次乘法(一次把下一层的结果平方,一次是n为奇数的时候乘上一个x, 因此是两次).
那么很显然需要$ 2\log n $次的加法.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文