JS Hash table
Table of contents
ν΄μ ν μ΄λΈ
ν΄μ ν μ΄λΈμ μ¬μ©νλ©΄ μλ£λ₯Ό μ½κ³ λΉ λ₯΄κ² μ μ₯ν μ μκ³ ν€-κ° μμ κΈ°λ°μΌλ‘ μλ£λ₯Ό μ»μ μ μλ€. μλ°μ€ν¬λ¦½νΈ κ°μ²΄λ ν΄μ ν μ΄λΈκ³Ό κ°μ λ°©μμΌλ‘ ν€μ ν΄λΉ ν€μ μ°κ΄λ κ°μ μ μνλ λ°©μμΌλ‘ λμνλ€.
ν΄μ ν μ΄λΈμ μ£Όμ ν¨μ
put()
: ν΄μ ν μ΄λΈμ μλ£λ₯Ό μ μ₯- μκ° λ³΅μ‘λ: O(1)
get()
: ν΄μ ν μ΄λΈλ‘λΆν° μλ£λ₯Ό μ»μ- μκ° λ³΅μ‘λ: O(1)
λΈλΌμ°μ μ localStorage
- ν΄μ ν μ΄λΈμ κΈ°λ°μ μλ£ κ΅¬μ‘°
- μ£Όμ λΈλΌμ°μ (λͺ¨λ λΈλΌμ°μ ?)μμ μ§μνλ κΈ°λ³Έ μλ°μ€ν¬λ¦½νΈ κ°μ²΄
- λΈλΌμ°μ λ΄μ μλ£λ₯Ό μ μ§ν μ μκ² ν΄μ€λ€ (μΈμ μ΄νμλ μ κ·Ό κ°λ₯νλ€λ κ²μ μλ―Έ)
ν΄μ± κΈ°λ²
ν΄μ ν¨μ ν΄μ ν¨μλ νΉμ ν€λ‘ μλ£λ₯Ό μ μ₯νλ λ°°μ΄μ μΈλ±μ€λ‘ λ³ννλ€.
- κ²°μ μ±: λμΌν ν€λ λμΌν ν΄μ κ°μ μμ±ν΄μΌ νλ€.
- ν¨μ¨μ±: μκ° λ³΅μ‘λκ° O(1)μ΄μ΄μΌ νλ€.
- κ· μΌν λΆν΄: λ°°μ΄ μ 체λ₯Ό μ΅λν νμ©ν΄μΌ νλ€.
μμ ν΄μ±
μμλ₯Ό μ¬μ©ν λͺ¨λλ¬ λλμ μ΄ κ· μΌν λ°©μμΌλ‘ λ°°μ΄ μΈλ±μ€λ₯Ό μμ±νλ€. μμμ μν λͺ¨λλ¬λ κ³ μ λ ν¬κΈ°μ λν΄ κ°μ₯ κ· λ±ν λΆλ°°λ₯Ό 보μ₯νλ€.
νμ¬
νμ¬ ν΄μ± κΈ°λ²μ μ¬μ©ν΄ μΆ©λμ νΌνκ³ λ°°μ΄μμ λ€μμΌλ‘ μ¬μ© κ°λ₯ν μΈλ±μ€λ₯Ό μ°Ύμ μ μλ€.
μ ν νμ¬ ν λ²μ ν μΈλ±μ€λ₯Ό μ¦κ°μν΄μΌλ‘μ¨ μ¬μ© κ°λ₯ν μΈλ±μ€λ₯Ό μ°Ύλλ€. λ¨μ μ κ΅°μ§μ΄ μ½κ² λ°μνλ€λ κ²μ΄λ€. κ΅°μ§μ μνν΄μΌ ν μλ£λ₯Ό λ λ§μ΄ μμ±νκΈ° λλ¬Έμ μ’μ§ λͺ»νλ€.
μ΄μ°¨ νμ¬ μ΄μ°¨ νμ¬λ λ§€λ² 1μ© μ¦κ°μν€λ λμ μμ μ κ³±μ μ¬μ©νλ€. κ΅°μ§ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° μ’μ κΈ°λ²μ΄λ€.
μ΄μ€ ν΄μ± / μ¬ν΄μ±
μ΄μ°¨ ν΄μ± ν¨μλ₯Ό μ¬μ©ν΄ μλ ν΄μ± ν¨μλ‘λΆν° λμ¨ κ²°κ³Όλ₯Ό ν λ² λ ν΄μ±νλ κ²μ΄ μλ€.
- 첫 λ²μ§Έ ν΄μ± ν¨μμ λ¬λΌμΌ νλ€.
- μκ° λ³΅μ‘λκ° O(1)μ΄μ΄μΌ νλ€.
- κ²°κ³Όκ° 0μ΄ λΌμλ μ λλ€.
$$ hash_2(x) = R-(x \% R) $$
- $x$ : 첫 λ²μ§Έ ν΄μ±μ κ²°κ³Ό
- $R$ : ν΄μ ν μ΄λΈμ ν¬κΈ°λ³΄λ€ μλ€.
- $i$ : λ°λ³΅ μλ νμ
$$ i*hash_2(x) $$
μμ½
ν΄μ ν μ΄λΈμ μ²μ μ μ ν λ μ§μ ν κ³ μ λ ν¬κΈ°μ μλ£ κ΅¬μ‘°μ΄λ€. λ°°μ΄μ μΈλ±μ€λ₯Ό μμ±νλ ν΄μ ν¨μλ₯Ό μ¬μ©ν΄ ꡬνλλ€. μ’μ ν¨μλ κ²°μ μ μ΄κ³ ν¨μ¨μ μ΄κ³ κ· λ±νκ² λΆν΄νλ€. νμ§λ§ μΌλΆ μΆ©λμ΄ λ°μνλ κ²μ νΌν μ μλ€.