ฉันมีวงวนง่าย ๆ เช่นนี้:
for (int i = 0; i < n; i++) {
// constant time operation
}
ง่ายมากที่จะเห็นว่ามันมีความซับซ้อนของเวลา O(n) แต่ถ้าเราคำนวณมัน ทำไมมันจึงเป็น 2*n + 2 + c*n
(ให้คำตอบมา) ไม่ใช่ (1+ (n+1) + 2*n + c*n) = (3+c)*n + 2
? ฉันเห็นว่า i++
เป็นการดำเนินการ 2 อย่าง: การบวกและการมอบหมาย; ดังนั้นจึงควรเป็น 2*n
และการดำเนินการคงที่จะดำเนินการ n
ครั้ง ดังนั้นจึงเป็น c*n