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

三层for循环代码的时间复杂度是O(n^3)还是O(n^2)?

关于这段Java代码时间复杂度的判定

分两种场景明确结论:

按你贴出的原始代码直接计算

你给出的代码里所有循环的迭代上限都是固定常量6,和输入规模n没有任何绑定关系:

  • firstMethod的外层i循环固定跑6次
  • 内层j循环每次外层迭代固定跑6次,累计调用secondMethod()的次数是6*6=36次
  • 每次调用secondMethod()时,方法内部的循环固定跑6次打印操作
    整段代码总执行次数是固定的216次,不会随任何输入规模变化,这种场景下时间复杂度为O(1),既不是O(n²)也不是O(n³)。

时间复杂度的核心是衡量算法执行开销随输入规模增长的变化趋势,只要执行次数是和输入规模无关的固定常量,不管绝对次数是多少,都归为常量级复杂度。

如果代码里的固定值6是输入规模n的笔误(即所有循环边界随输入规模n动态变化)

这也是你纠结O(n²)还是O(n³)的默认前提,此时复杂度是O(n³),判定逻辑很简单:

  • 很多人容易在这里踩坑:别看到第三层循环被抽成了单独的secondMethod就觉得少了一层嵌套,方法封装只是代码组织形式,不会改变循环的实际嵌套执行关系
  • 三层循环是完全嵌套结构:外层i循环迭代n次,每次i迭代下j循环迭代n次,每次j迭代下secondMethod内部的循环再迭代n次,总操作次数和n³正相关
  • 你可以直接用现有代码的固定值验证:当循环上限取6时,总打印次数是666=216次,和n³的计算结果完全匹配,远大于n²对应的36次,显然不符合O(n²)的特征。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:48:21