请教这段嵌套循环程序的时间复杂度及计算方法,自我判断存疑
这段代码的时间复杂度分析
先看你的代码:
for(int i = 0; i < n; i ++) { for(int j = 0; j < n; j++) { } for(int k = 0; k < n; k++) { } }
结论:时间复杂度是O(n²)
计算过程:
- 外层
i循环会执行n次。 - 每次外层循环里,包含两个独立的内层循环:
j循环和k循环,每个都执行n次。所以单次外层循环的总操作次数是n + n = 2n。 - 整体总操作次数为
n * 2n = 2n²。根据大O表示法的规则,常数系数可以忽略,最终时间复杂度为O(n²)。
为什么会混淆成O(n³)?
你可能误把两个内层循环当成了嵌套关系(比如k循环写在j循环内部)。如果是嵌套的情况,每次j循环执行时都会触发n次k循环,总操作次数会是n * n * n = n³,时间复杂度才是O(n³)。但你的代码里j和k循环是同级的,都直接属于外层i循环,所以不是嵌套结构。
内容的提问来源于stack exchange,提问作者Suraj Paudel
相关产品推荐
相关产品推荐

