这个函数的时间复杂度是多少? (嵌套 for 循环)
What is the time complexity of this function? (nested for loop)
我认为是 O(n * m)
但也认为是 O(n)
分不清哪一个是正确的..
考虑到第一个循环只循环 20 次(固定数量),第二个嵌套 for 循环只循环 number / 20,最后第三个嵌套循环 3 次。
所以它是O(n * m / 20 * 3)
,我们可以称它为O(n * m * k)
?这是正确的吗?
或者它是 O(n)
因为第二个循环时间复杂度只会影响它,因为它根据用户输入的数字而不同。
function loop(number) {
let answer = 0;
for (let i = 0; i < 20; i++) {
for (let j = 0; j < number / 20; j++) {
for (let k = 0; k < 3; k++) {
answer++;
}
}
}
return answer;
}
外循环总是恰好循环 20 次,内循环总是恰好循环 3 次。唯一有任何可变性的是中间循环,它循环 number
/ 20 次。因此,您将递增 answer
20 * 3 * (n / 20) 次,并且由于大 O 表示法忽略常量,因此计算结果为 O(N)
.
我认为是 O(n * m)
但也认为是 O(n)
分不清哪一个是正确的..
考虑到第一个循环只循环 20 次(固定数量),第二个嵌套 for 循环只循环 number / 20,最后第三个嵌套循环 3 次。
所以它是O(n * m / 20 * 3)
,我们可以称它为O(n * m * k)
?这是正确的吗?
或者它是 O(n)
因为第二个循环时间复杂度只会影响它,因为它根据用户输入的数字而不同。
function loop(number) {
let answer = 0;
for (let i = 0; i < 20; i++) {
for (let j = 0; j < number / 20; j++) {
for (let k = 0; k < 3; k++) {
answer++;
}
}
}
return answer;
}
外循环总是恰好循环 20 次,内循环总是恰好循环 3 次。唯一有任何可变性的是中间循环,它循环 number
/ 20 次。因此,您将递增 answer
20 * 3 * (n / 20) 次,并且由于大 O 表示法忽略常量,因此计算结果为 O(N)
.