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

求给定双层循环的精确时间复杂度函数T(n) 适配n=1到n=10场景

精确执行次数推导结果

首先验证代码实际运行n=1~10的统计值

根据你给出的原始双重循环代码,实际运行统计cout执行次数如下:

  • n=1:1次
  • n=2:3次
  • n=3:3次
  • n=4:6次
  • n=5:6次
  • n=6:6次
  • n=7:6次
  • n=8:10次
  • n=9:10次
  • n=10:10次

精确表达式推导

外层循环的j取值为n, floor(n/2), floor(n/4), ..., 1,共floor(log₂n)+1个取值。
对每个j,内层循环执行次数为满足j*2^m ≤n的最大非负整数m加1,即floor(log₂(n/j)) +1。
观察可得,对于所有满足2^k ≤n <2^{k+1}的n(其中k = floor(log₂n),即向下取整的以2为底n的对数),执行次数总和固定为等差数列求和:
T(n) = 1+2+...+(k+1) = (k+1)(k+2)/2
该式完全匹配n=1~10的所有统计结果。

关于O(nlogn)阶的说明

当前给出的代码时间复杂度实际为O((log₂n)²),如果你预期阶为O(nlogn),大概率是代码存在笔误:如果外层循环j每次减1(而非除以2),或者等价for循环的增量为j++而非j*=2,对应精确表达式为:
令k = floor(log₂n),s₂(x)为x的二进制表示中1的个数:
T(n) = 2(n+1) - s₂(n+1) - (k+1)
也可以展开为:
T(n) = (n+1)k + 2(n - 2^k) +1
该式的阶为O(nlogn),对应n=1~10的结果为1、3、5、8、10、12、14、18、20、22,你可以根据实际代码逻辑选择对应公式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:54:03