gpt4 book ai didi

for-loop - 时间复杂度问题 3 循环 + if 语句

转载 作者:行者123 更新时间:2023-12-04 15:09:05 24 4
gpt4 key购买 nike

我很难找到下面代码的时间复杂度。我认为 if语句将运行大约 n次;然而,我无法用数学来描述它。提前致谢。

int sum = 0;

for (int i = 1; i < n; i++) {
for (int j = 1 ; j < i*i; j++) {
if (j % i == 0) {
for (int k = 0; k < j; k++) {
sum++;
}
}
}
}

最佳答案

外环
嗯,很明显它是 O(n) 因为 in 为界.
内循环
如果我们单独看第​​二个循环,那么它看起来如下:

...
for (int j = 1 ; j < i*i; j++){
...
ji*i 为界或者干脆 n^2 .
但是,不会为每个 j 执行最里面的循环。 ,但仅适用于 j可以被 i 整除的 s因为这就是约束 j % i == 0方法。自 j ~ i*i ,将只有 i在最里面的循环被执行的情况下。因此,内循环中的迭代次数受 i^3 的限制。或者干脆 n^3 .
结果
因此,总时间复杂度为 O(n4)。

关于for-loop - 时间复杂度问题 3 循环 + if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65538928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com