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

多层嵌套循环的时间复杂度分析:求解O(n^3 log n^2)是否正确

循环时间复杂度分析

首先注意你提供的代码存在逻辑错误:第二层循环的循环变量是j,但条件写成了i < i*i,且循环体里自增的是i而非j,这会导致外层循环的i被内层直接修改,逻辑完全混乱。我们先修正为合理的代码(假设是笔误,将条件改为j < i*i,循环变量自增j):

public static void main(String[] args) 
{
    int n = 39;
    for(int i = 0; i < n; i++)
    {
        for(int j = 1; j < i*i; j++)
        {
            for(int k = 3; k < j; k = k*2)
            {
                    
            }
        }
    }
}

接下来逐层分析时间复杂度:

  1. 外层循环:i从0到n-1,共n次迭代。但当i=0或i=1时,i*i分别为0和1,第二层循环的条件j < i*i不成立,因此这两次迭代没有实际操作。有效迭代次数约为O(n)。

  2. 中间层循环:对于每个有效的i(i≥2),j从1到i²-1,迭代次数约为i²,即时间复杂度为O(i²)。

  3. 最内层循环:对于每个j,k从3开始每次乘以2,直到k≥j。这是典型的对数级循环,迭代次数为log₂j(忽略常数项,因为3≈2^1.58,常数不影响复杂度量级),时间复杂度为O(logj)。

总复杂度计算

总操作次数为三层循环的嵌套求和:

  • 先计算对每个i,中间层与最内层的总操作数:sum_{j=1}^{i²-1} logj
    根据斯特林公式,sum_{j=1}^m logj = log(m!) ≈ m logm - m,因此这个求和的量级为O(i² logi²) = O(i² logi)(因为logi²=2logi,常数系数可忽略)。
  • 再计算外层循环的总和:sum_{i=2}^{n-1} i² logi
    通过积分近似(或求和量级分析),这个求和的量级为O(n³ logn)。

关于你的推测

你推测的O(n³ logn²)和O(n³ logn)是等价的,因为logn²=2logn,时间复杂度分析中常数系数可以忽略,所以你的结论本质正确,通常简化写为O(n³ logn)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:33:39