基于n计算代码语句执行次数的正确方法及实例问询
基于n计算代码语句执行次数的方法详解
嘿,我来给你把这个问题讲透!咱们拿具体的代码例子结合你提到的MyStatement1和MyStatement2来分析,你就能快速掌握判断方法。
示例代码场景
先看一段典型的嵌套循环代码:
// 外层循环:从i=0到i=n-1,共执行n次 for (int i = 0; i < n; i++) { MyStatement1; // 位于外层循环体 // 内层循环:每一次外层循环,j从0到j=n-1,共执行n次 for (int j = 0; j < n; j++) { MyStatement2; // 位于内层循环体 } }
各语句执行次数分析
1. MyStatement1的执行次数:n次
原因很直接:它在外层循环的循环体里,外层循环的迭代条件是i < n,i从0开始,会取到0、1、2...n-1,一共n个值,每一次外层循环都会执行一次MyStatement1,所以总次数是n次。
2. MyStatement2的执行次数:n²次
它在内层循环的循环体里,而内层循环是嵌套在外层循环里的:
- 每执行1次外层循环,内层循环会完整跑n次(j从0到n-1)
- 外层循环一共跑n次,所以内层循环的总执行次数就是
n * n = n²,对应MyStatement2的执行次数就是n²次。
通用判断方法
不管代码结构怎么变,核心逻辑都是拆解循环层级,统计每一层的迭代次数:
- 先定位语句所在的循环层级(是外层、内层,还是并列循环)
- 嵌套循环:各层循环的迭代次数相乘(比如三层嵌套就是nnn)
- 并列循环:各循环的迭代次数相加(比如两个独立的for循环,每个跑n次,总次数就是n+n)
- 注意循环的步长、起始值和终止条件:比如步长为2的循环
for(int i=0; i<n; i+=2),迭代次数是⌈n/2⌉(向上取整);如果终止条件是i <= n,那迭代次数就是n+1次。
举个变种例子,如果内层循环条件是j < i,那MyStatement2的执行次数就是1+2+...+(n-1) = n(n-1)/2次——这时候就是内层循环的次数随外层i的变化而累加,不是固定的n次了。
其实只要把每一层循环的执行逻辑拆解开,一步一步统计,就不会出错啦~
内容的提问来源于stack exchange,提问作者Muj Moh
相关产品推荐
相关产品推荐

