我認為是O(n * m)
但也認為是O(n)
真的分不清哪一個是對的。。
考慮到第一個回圈僅回圈 20 次(固定數量),第二個嵌套 for 回圈僅回圈數 / 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;
}
uj5u.com熱心網友回復:
外回圈總是恰好回圈 20 次,內回圈總是恰好回圈 3 次。唯一有任何可變性的是中間回圈,它回圈number
/ 20 次。因此,您將遞增answer
20 * 3 * (n / 20) 次,并且由于 Big O 表示法忽略了常量,因此結果為O(N)
.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/485599.html
標籤:javascript 算法 循环 时间复杂度 大哥
上一篇:Javascript中的數字在宣告為變數后會發生變化。即使從字串中決議它也會回傳錯誤的數字
下一篇:查詢dynamodb時找不到資源