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

如何求解给定嵌套循环算法的时间复杂度T(n)?

算法时间复杂度计算解析

先明确代码每行的执行次数:

k = 1                # 执行1次
while (k <= n):      # 执行n+1次(k从1到n时判断成立,共n次;k=n+1时判断不成立,1次)
    j = 1            # 执行n次(外层循环每轮执行1次)
    while (j <= n):    # 每轮外层循环中执行⌊log₂n⌋+2次,总次数n*(⌊log₂n⌋+2)
        j *= 2       # 每轮外层循环中执行⌊log₂n⌋+1次,总次数n*(⌊log₂n⌋+1)
    k += 1           # 执行n次

总执行次数计算

把所有行的执行次数相加并化简:

T(n) = 1 + (n+1) + n + n*(⌊log₂n⌋+2) + n*(⌊log₂n⌋+1) + n
T(n) = 2n⌊log₂n⌋ + 6n + 2

对疑问的解答

你给出的两个选项都不正确:

  • 选项T(n) = 3n +2log₂n + 3错误:只计算了一次内层循环的对数操作次数,但内层循环嵌套在外层循环中,每轮外层都要执行一次内层循环,对数项需要乘以n。
  • 选项T(n) = 3n + 2n² + 3错误:误将内层循环当成O(n)的线性循环,但内层循环中j是每次翻倍(j *= 2),而非逐次加1,内层循环的时间复杂度是O(logn),不是O(n)。

渐近时间复杂度

忽略低阶项和常数系数,该算法的渐近时间复杂度为O(nlogn),即线性对数级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:32:48