Big O
μ½λμ μ±λ₯μ νκ°νλ μΌλ°μ μΈ μ§νλ‘ μ¬μ©λλ μΌμ’
μ μμ€ν
νλμ λ¬Έμ λ μ¬λ¬κ°μ§ νμ΄ λ°©μμ΄ μ‘΄μ¬νκ³ λ¬΄μμ΄ κ°μ₯ μ’μκ°μ λν λ¬Όμμ μνμ μΌλ‘ ννν΄ μ§νλ₯Ό μ 곡ν μ μμ
μ¬λ¬ μ κ·Όλ²μ μ₯λ¨μ μ νμ
νκΈ° μ½κ³ λλ²κΉ
μ μ±λ₯μ μν₯μ λ―ΈμΉλ λΆλΆμ μ½κ² νμ
ν μ μλ€.
λ©΄μ μ μμ£Ό λμ€λ μ μμλλΌκ³ ν¨.
μ½λ μκ° μ κΈ°
1μμ νΉμ N κ° μ¬μ΄μ λͺ¨λ μ«μλ₯Ό λνλ ν¨μλ₯Ό λ§λμμ€
function(3) // 1 + 2 + 3 = 6
function a(n){ let total = 0; for (let i = 1; i <= n; i++){ total += i; } return total; } function b(n){ return n * (n + 1) /2; }
μ΄λκ² λ μ’μμ§μ μλ―Έλ?
- λΉ λ₯Έκ°?
- λ©λͺ¨λ¦¬λ₯Ό λ μ¬μ©νλκ°?
- λ κ°λ μ±μ΄ μ’μκ°?
Β
μ¬κΈ°μ λΉ λ₯΄κΈ°λ μ΄λ»κ² μΈ‘μ νλ?
JSμ λ΄μ₯ ν¨μ performance.now() μ¬μ©νκΈ°
function a(n){ let total = 0; for (let i = 1; i <= n; i++){ total += i; } return total; } let t1 = performance.now(); a(100000000000); let t2 = performance.now(); console.log(`time ${(t2 - t1 / 1000}`)
10μ΅μΌλ‘ μ λ ν¨μλ₯Ό λΉκ΅νλ©΄ μ μλ 1μ΄ νμλ 0.0001μ΄μ λλ¨
κ·ΈμΉλ§ μ΄λ° λ°©μμ΄ μ λ§ νμ€ν μ±λ₯ μΈ‘μ μ μ§νκ° λ μ μλ?
μκ° λ¬Έμ
- κΈ°κΈ°μ μ¬μμ λ°λΌ μΈ‘μ μ κ²°κ³Όκ° λ€λ₯΄κ³ 무μμ νλμ§μ λ°λΌ λ€λ₯΄λ€.
- λΉ λ₯Έ μκ³ λ¦¬μ¦μμλ μ λ§ μ§§μ μκ°μμ λλλ€ νμ§λ§ μ΄μ€μμλ μ΅μ μ΄ μ‘΄μ¬νλλ° μ΄κ±Έ μ΄λ»κ² μ μ μλ?
μ»΄ν¨ν°μ μ°μ° κ°―μ μΈκΈ°
λ¨μνκ² μ»΄ν¨ν°κ° λͺλ²μ μ°μ°μ ν΄μΌνλ μΈλκ² μ»΄ν¨ν°μ μ¬μμ κ΄λ ¨μμ΄ μ¬μ©μ΄ κ°λ₯
μλ μκ³ λ¦¬μ¦μ Nμ΄ μΌλ§λ ν¬λ 3λ²μ μ°μ°μ ν¨μκ° λλ¨
μλλ Nλ§νΌμ μ°μ°μ μνν¨
5n+2μ μ°μ°μ΄ λμ€μ§λ§ μμΈν κ°μλ³΄λ¨ ν°κ·Έλ¦Όμ λ΄μΌνν¨
μκ°λ³΅μ‘λμ μκ°ν
Big O 곡μ
μ
λ ₯μ ν¬κΈ°μ μ€ν μκ°μ κ΄κ³λ₯Ό μλ―Έν¨
μλ ν¨μλ Nμ ν¬κΈ°κ° μ€νμκ°μ μ΄λ€ μν₯λ μ£Όμ§ μμ
μλ ν¨μλ 5nμ΄μ§λ§ μμλ μ μΈνλ€
μλ ν¨μλ o(n)μ 루νκ° 2κ° μμ§λ§ O(2n)μΌλ‘ νμνμ§ μλλ€
μ€μ²© 루νμ κ²½μ°
Big O νμ λ¨μν νκΈ°
κΈ°λ³Έμ μΌλ‘ μμλ ν¬κ² μ€μνμ§ μμ
- μ°μλ μμλ€ (λνκΈ°, λΉΌκΈ°, λλκΈ°)
- λ³μλ μμ
- index λ‘ λ°°μ΄μ μ κ·Όνλκ²λ μμ
- 루νλ νΈλ₯΄ κΈΈμ΄ * λ΄λΆ μ°μ° λ§μ½ 루νκ° νλ λ μλ€λ©΄ (n*m)
κ³΅κ° λ³΅μ‘λ
μ§κΈκΉμ§λ μκ° λ³΅μ‘λλ₯Ό 보μμ§λ§ κ³΅κ° λ³΅μ‘λλ λ©λͺ¨λ¦¬λ₯Ό μΌλ§λ μ°¨μ§νλμ§λ₯Ό 보λ κ²
μ
λ ₯μ μ μΈνκ³ μκ³ λ¦¬μ¦μ΄ μ°¨μ§νλ λ©λͺ¨λ¦¬ μμμ μλ―Έν¨
- null, number, undefine λ±μ μμ 곡κ°μ μ°¨μ§
- λ¬Έμμ΄μ O(n) 곡κ°μ νμλ‘ν¨
- μλ£ν νμ λ O(n) 곡κ°μ΄ νμν¨
Β
μ
λ ₯μ ν¬κΈ°μ μκ΄μμ΄ μ¬μ©νλ 곡κ°μ μ΄λ―Έ μ ν΄μ Έ μμ
μ
λ ₯μ ν¬κΈ°μ λ°λΌ μλ‘μ΄ λ°°μ΄μ 리ν΄νκΈ°μ O(n)
Β
λ‘κ·Έμ μΉμ
λͺλͺ μκ³ λ¦¬μ¦μ μμ, n, n μ κ³± λ±μΌλ‘ νννκΈ° μ΄λ €μ΄ κ²½μ°κ° μμ
κ·Έ κ²½μ°μ λ±μ₯νλκ²μ΄ log
Log
μ§μ ν¨μμ