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

询问三段循环及给定嵌套循环代码的时间复杂度,含内层循环疑问

循环时间复杂度分析

关于未提供代码的三段循环

你提到的“三段循环”未附上具体代码,无法直接分析其时间复杂度,需补充循环的逻辑细节才能推导。

给定嵌套循环的时间复杂度分析

代码回顾

let time = 0;
for(let i = 1; i <= n; i++)
{
  for(let j = 1; j <= i; j++)
  {
    for(let k = 1; k <= n*n; k += i*i)
    {
      time++
    }
  }
}

最内层循环的复杂度

最内层循环的执行次数由步长i*i决定:

  • 循环终止条件为k <= n²,每次步长是i²,执行次数约为n² / i²(复杂度分析中忽略常数项)。
  • 因此,最内层循环既不是O(1)也不是O(n²),它的复杂度是O(n²/i²),是和i相关的变量级复杂度。

整体时间复杂度

逐层推导总执行次数:

  1. 固定i时,最内层循环执行O(n²/i²)次;
  2. 中间层循环j从1到i,共执行i次,因此中间层+最内层的总次数为i * O(n²/i²) = O(n²/i);
  3. 最外层循环i从1到n,整体总次数为Σ(i=1到n)O(n²/i) = O(n² * Σ(i=1到n)1/i)。

调和级数Σ(i=1到n)1/i的增长速度为O(log n),因此整体时间复杂度为O(n² log n)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:00:52