如何计算下述循环代码的时间复杂度?
步长为2的for循环时间复杂度解析
先看你给出的代码:
for (let i = 0; i < n; i+=2){ ...operation }
直接说核心结论:这个循环的时间复杂度是O(n)(线性时间复杂度),原因如下:
- 循环执行次数:从i=0开始,每次加2,直到i≥n时停止。实际执行次数约为n/2(偶数n时正好是n/2,奇数n时是(n-1)/2)。
- 时间复杂度的渐近分析只关注n增大时的增长趋势,常数系数会被忽略。n/2的增长速度和n完全一致,所以不管步长是2还是其他固定常数,只要步长不随n变化,循环的时间复杂度都是O(n)。
- 额外提醒:如果循环体里的操作本身有独立的时间复杂度(比如嵌套了另一个循环),整体时间复杂度要将两者相乘;但如果是单次简单操作(比如赋值、判断),整体就是O(n)。
内容的提问来源于stack exchange,提问作者Muzaffar Shaikh
相关产品推荐
相关产品推荐

