Hash-Table
π« @TODO
Hash
Hash Table
ν΄μ¬ ν¨μμ ν¨κ» λ°μ΄ν° κ²μμ ν¨μ¨μ μΌλ‘ νκΈ° μν΄ μ¬μ©λλ ꡬ쑰
Key(λ°μ΄ν° μλ³μ), Value(λ°μ΄ν°μ λ΄μ©)μ΄ ν μμ μ΄λ£¨λ λ°μ΄ν°λ₯Ό μ μ₯
νΉμ λ°μ΄ν°κ° λͺ λ²μ§Έμ μ μ₯λΌ μλμ§ λͺ¨λ₯΄λ―λ‘ μμμλΆν° μ°¨λ‘λλ‘ νμΈ?
μ ν νμ
λ°μ΄ν°μμ λΉλ‘ν΄μ κ³μ° μκ°μ΄ λμ΄λ¨
λ°°μ΄ νμμ μκ°μ΄ 걸리λ―λ‘ νμμλ μ ν©νμ§ μμ ꡬ쑰
So,
- λ°μ΄ν°λ₯Ό μΆκ°ν λ ν΄μν¨μλ₯Ό μ΄μ©ν΄μ, Keyμ ν΄λΉνλ ν΄μκ°μ κ³μ°
- i.e. Joe -> 4928
- ꡬν ν΄μκ°μ ν΄μ ν
μ΄λΈμ ν¬κΈ°λ‘ λλ¨Έμ§ μ°μ° (mod μ°μ°)
- i.e. 4928 % 5 = 3
- κ³μ°ν κ° μμΉμ λ°μ΄ν° μ μ₯
- i.e. 3λ² μμΉμ μ μ₯
- λ°λ³΅, λ§μ½ μ€λ³΅λ κ°μ΄ λμ€λ©΄ (μΆ©λμ΄λΌκ³ ν¨) μ°κ²°λ¦¬μ€νΈκ΅¬μ‘°λ‘ κΈ°μ‘΄ λ°μ΄ν°μ μ°κ²° (μ°μλ² Chainingμ΄λΌκ³ ν¨)
- κ²μ μ λ§μ°¬κ°μ§λ‘ mod μ°μ° κ°μΌλ‘ μ°Ύμ, μΆ©λλ‘ μΈν΄ μ°κ²°λ¦¬μ€νΈκ° λ§λ€μ΄μ§ μμΉμΌ κ²½μ°, μ ν νμ μ€μ
ν΄μ ν¨μλ₯Ό ν΅ν΄ λ°°μ΄ λ΄μ νΉμ λ°μ΄ν°μ λΉ λ₯΄κ² μ κ·Ό κ°λ₯
ννΈ, ν΄μκ°μ΄ μΆ©λν λλ 리μ€νΈλ₯Ό μ΄μ©νκ³ μμ΄μ μ μ₯ν λ°μ΄ν° μκ° μ ν΄μ Έ μμ§ μλλΌλ μ μ°νκ² λμν μ μμ
ν΄μν
μ΄λΈμ λ°°μ΄ ν¬κΈ°
λ무 μμΌλ©΄ μΆ©λμ΄ λ§μμ§κ³ -> μ ν νμμ λΉλκ° λμμ§
λ무 컀μ§λ©΄ λ°μ΄ν°κ° μλ 곡κ°μ΄ λ§μμ Έμ λ©λͺ¨λ¦¬λ₯Ό λλΉ
μ μ ν ν¬κΈ°λ‘ μ€μ νλ κ²μ΄ μ€μ
μΆ©λ μ²λ¦¬ λ°©λ²μ μ°μλ² λ§κ³ λ μ¬λ¬ κ°μ§κ° μμ
κ°λ°© μ£Όμλ² Open addressing
μΆ©λμ΄ λ°μν κ²½μ° λ€μ νλ³΄κ° λ μ£Όμ (λ°°μ΄ μμ μμΉ)λ₯Ό ꡬν΄μ κ±°κΈ°μ μ μ₯νλ λ°©μ
ν΄λΉ μ£Όμμλ λ°μ΄ν°κ° μ‘΄μ¬νλ€λ©΄ λ€μ ν보 μ£Όμλ₯Ό ꡬνλ©° λΉμ΄μλ κ³³μ μ°Ύμ λκΉμ§ λ€μλ² μ£Όμλ₯Ό ꡬν¨
λ€μ μ£Όμλ₯Ό μ΄λ»κ² ꡬνλ κ°λ
ν΄μ ν¨μλ₯Ό μ¬λ¬ κ° μ¬μ©νλ€λμ§, βμ ν νμ¬β λ± λͺ κ°μ§ λ°©λ²μ΄ μμ
ν΄μ ν¨μμ κ²½μ°,
ν΄μκ°μΌλ‘λΆν° μλ κ°μ μΆμΈ‘ν μ μλλ‘ κ΅¬ννκΈ°λ νμ§λ§,
보μμ μν κ²μ΄λ―λ‘ νμμ μΈ μ‘°κ±΄μ μλ
λ°μ΄ν°μ μ μ°ν μ μ₯κ³Ό λΉ λ₯Έ μ κ·Όμ΄ κ°λ₯ν ν΄μ ν
μ΄λΈμ
νλ‘κ·Έλλ° μΈμ΄μ μ°κ΄ λ°°μ΄ Associative arrayλ±μ μ¬μ©λκ³ μμ