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

三重嵌套for循环的精确与大O时间复杂度求解问询

嘿,我来帮你理清楚这个三重循环的时间复杂度问题,你之前的困惑其实是没抓住每一层循环的实际执行逻辑,咱们一步步拆解:

1. 逐层分析循环执行次数

先看最内层的k循环:当i和j固定时,k的范围是[i, j-1],所以执行次数是(j-1 - i + 1) = j - i次。注意当j=i时,j-i=0,这时候内层循环根本不会执行——这也解释了为什么i=n时,第二层循环只跑1次(j=n),但内层循环次数为0,完全合理,不是你之前想的“不合理”哦。

接下来看中层的j循环:对于固定的i,j从i遍历到n,我们需要把每个j对应的内层循环次数加起来,也就是计算:
Σ(j=i到n)(j - i)
我们可以换个变量d = j - i,当j=i时d=0,j=n时d=n-i,这个求和就变成从0到n-i的等差数列求和,结果是(n-i)(n-i+1)/2。

最后看外层的i循环:i从1到n,所以总执行次数S(n)就是把每个i对应的中层+内层循环次数累加起来:
S(n) = Σ(i=1到n)[(n-i)(n-i+1)/2]

2. 计算精确执行次数

为了简化计算,我们令m = n - i(当i=1时m=n-1,i=n时m=0,求和顺序不影响结果),那么公式就变成:
S(n) = Σ(m=0到n-1)[m(m+1)/2]

把m(m+1)/2展开成(m² + m)/2,求和可以拆成两部分:
S(n) = (1/2) * [ Σ(m=0到n-1)m² + Σ(m=0到n-1)m ]

用已知的数学求和公式代入:

  • 从0到n-1的整数和:Σm = n(n-1)/2
  • 从0到n-1的平方和:Σm² = (n-1)n(2n-1)/6

代入后一步步计算:

S(n) = (1/2) * [ (n-1)n(2n-1)/6 + n(n-1)/2 ]
     = (1/2) * n(n-1) * [ (2n-1)/6 + 3/6 ]  // 通分1/2为3/6,方便合并
     = (1/2) * n(n-1) * (2n+2)/6
     = (1/2) * n(n-1) * 2(n+1)/6  // 提取2n+2中的公因子2
     = n(n-1)(n+1)/6
     = (n³ - n)/6

咱们验证一下你观察到的序列:

  • n=1时:(1-1)/6=0 ✔️
  • n=2时:(8-2)/6=1 ✔️
  • n=3时:(27-3)/6=4 ✔️
  • n=4时:(64-4)/6=10 ✔️
    完全匹配你看到的结果!
3. 大O时间复杂度

当n足够大时,低阶项-n和系数1/6对整体的增长趋势没有决定性影响,所以这个三重循环的大O时间复杂度是O(n³)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:22:49