在获取以下嵌套的for循环的时间复杂度时,我遇到了麻烦/怀疑:
我可以在最内层的循环中进行优化/读取更改,这将删除+ 1-1部分,但这不应成为我计算的一个因素。
我知道嵌套循环的复杂性会成倍增加。现在,计算结束了,我不知道是否由于i循环n-2次,是否应将我的结果替换为(n-2)?关于中间循环的相同问题,我应该用(k-m * i + m)代替j吗?
由于我还不能发布图像,因此将其链接放在此处,并将其复制并粘贴到下面(for循环和我的计算):
for(int i = 1; i < n; i++){
for(int j = ((m+1)*(i-1)) + 1; j < k; j++){
for(int h = (m+1)*(i-1); h < (j-m+1)-1; h++){
}
}
}
Inner most loop
(j-m-1 - 1) - ((m+1)*(i-1)) =
= (j-m-1 - 1) - (m*i - m + i - 1) =
= j - m - 1 - 1 - m*i + m - i + 1 =
= j - m*i - 1
2º Inner most loop
(k - 1) - ((m+1)*(i-1)) =
= (k - 1) - (m*i - m + i - 1) =
= k - 1 - m*i + m - i + 1 =
= k - m*i + m
Outer loop
n - 1 - 1 =
= n - 2
Result
(j - m*i) * (k - m*i + m) * (n) =
= (j*k - j*m*i + j*m - m*i*k + (m*i)^2 - (m^2)*i) * n
图片:https://imgur.com/a/40eIlDj
感谢您的关注