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

嵌套循环时间复杂度分析:是否为O(nlog(n))?

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

嘿,咱们先把问题拆透——你说的应该是这种结构的循环吧:

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i; j++) {
        // 执行O(1)的操作
    }
}

首先得直接纠正你的推测:这个算法的时间复杂度确实是O(n²),并不是O(nlogn)。咱们算一算总操作次数就一目了然了:

当i=1时,内层循环跑1次;i=2时跑2次;……直到i=n时跑n次。总次数就是1+2+3+…+n,这是个标准的等差数列求和,公式是n(n+1)/2。把它展开就是(1/2)n² + (1/2)n,根据大O表示法的规则,我们只保留最高阶项、忽略系数和低阶项,最终结果就是O(n²)。

你之所以会觉得复杂度介于O(n)和O(n²)之间,大概率是把这种循环和内层循环次数与logn相关的场景搞混了(比如每次内层循环次数减半的分治类循环,那种才会是O(nlogn))。但在这个场景里,内层循环的次数是随着i线性增长的,累加后的总次数是二次方级别的——和两层都跑n次的纯n²循环属于同一个复杂度级别,只是系数更小,但大O表示法并不关心系数的差异。

举个直观的例子:当n=1000时,纯n²循环是100万次操作,而这个循环是500500次,差不多是一半,但量级还是十万级,和n²属于同一数量级;但如果是O(nlogn)的话,n=1000时大概是1000*10=10000次,量级差了整整一个级别,这就能清晰看出区别了。

所以总结一下:这种内层循环跑i次的嵌套结构,时间复杂度是O(n²),你的推测不准确,核心是没算对总操作次数的累加结果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:13:28