You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Θ符号计算给定算法的运行时间

分析该算法的Θ运行时间

没问题,我来帮你拆解这个算法的Θ复杂度计算~

首先先把算法逻辑用代码块清晰呈现:

输入:自然数n
i = 2
while i ≤ n do
    i = i^2
end while

核心思路:计算循环迭代次数

这个算法的循环体是常数时间操作(i = i^2只需要固定步数),所以整体运行时间的Θ复杂度完全由循环迭代次数决定。

我们先列出每次迭代后i的取值规律:

  • 初始值:i₀ = 2(进入循环前的初始状态)
  • 第1次迭代后:i₁ = i₀² = 2² = 4
  • 第2次迭代后:i₂ = i₁² = (2²)² = 2^(2²) = 16
  • 第3次迭代后:i₃ = i₂² = (2^(2²))² = 2^(2³) = 256
  • ...
  • 第k次迭代后:i_k = 2^(2^k)

循环终止的条件是i > n,也就是当某次迭代后i超过n时停止。我们需要找到最大的整数k,使得进入第k次循环前的i值 ≤ n。

推导迭代次数的Θ复杂度

根据上面的规律,进入第k次循环前的i值是i_{k-1} = 2^(2^{k-1}),循环继续的条件是:

2(2{k-1}) ≤ n

我们对不等式两边逐层取以2为底的对数:

  1. 第一次取log₂:2^{k-1} ≤ log₂ n
  2. 第二次取log₂:k-1 ≤ log₂(log₂ n)

整理后得到:k ≤ log₂(log₂ n) + 1

因为k是整数,实际迭代次数是floor(log₂(log₂ n)) + 1。在Θ符号的定义里,常数项和取整操作可以忽略,所以迭代次数的Θ复杂度是Θ(log log n)。

由于每次循环体是O(1)操作,因此整个算法的运行时间就是Θ(log log n)。

实例验证

  • 当n=4时:log₂(log₂4)=log₂2=1,迭代次数=1+1=2(实际执行:i从2→4→16,两次循环)
  • 当n=16时:log₂(log₂16)=log₂4=2,迭代次数=2+1=3(实际执行:2→4→16→256,三次循环)
  • 当n=100时:log₂(log₂100)≈2.73,取整后+1得3次迭代(实际执行:2→4→16→256>100,三次循环)

内容的提问来源于stack exchange,提问作者anita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:42:42