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

咨询嵌套循环代码的时间复杂度:是否为O(n²)?

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

你的答案O(n²)不正确,这段代码的时间复杂度实际是O(n log n),具体分析如下:

先看代码实现:

for (int i=1; i<=n; i++){
    for (int j=1; j<n; j+=i){
        x++;
    }
}

外层循环执行n次,但内层循环的迭代次数随i的取值变化:

  • 当i=1时,j每次递增1,内层循环执行约n次(准确为n-1次,大O分析中可近似为n)
  • 当i=2时,j每次递增2,内层循环执行约n/2次
  • 当i=3时,内层循环执行约n/3次
  • ...
  • 当i=n时,j仅能取1(1 + n >=n),内层循环执行1次

总操作次数是所有内层循环次数的总和,即:
$n \times (1 + \frac{1}{2} + \frac{1}{3} + ... + \frac{1}{n})$

括号内的部分是调和级数,它的渐近增长速度与$\ln(n)$成正比(加上一个常数项,大O分析中可忽略),因此整体时间复杂度为$O(n \log n)$。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:27:32