포스트

Hash

Hash

Hash

데이터의 효율적 관리를 위해 고정된 길이의 데이터로 매핑 하는 것

하지만 아무리 좋은 해시 함수를 적용해도 결국 Collision 현상은 피할 수 없다.

하지만 역시 해시 테이블은 적은 자원으로 데이터를 효율적으로 관리 가능

시간 복잡도 O(1)

Collision 문제

체이닝

  • 해당 값에 LinkedList 형식으로 노드를 추가해 가는 방식
    • Memory 문제

Open Addressing

  • 해당 주소에 이미 Data가 있다면 다른 값에 저장
    • 만약 3001번지에 Data가 있다면 3002번지에 저장
    • 3003, 3004로 이동

선형 탐사

  • 정해진 고정 폭으로 이동해서 Open Addressing 을 적용한다.

제곱 탐사

  • 정해진 고정 제곱 수로 이동해서 Open Addressing 을 적용한다.

하지만 이러한 방법 모두 결국 HashMap의 성능을 떨어트릴 가능성이 높음…

Hash buket 동적 확장

  • 그냥 Hash buket이 충분이 크면 된다!
  • 대게 load factor 70% ~ 80% 차기 시작한다면 buket의 크기를 확장 하는 전략을 사용
    • load factor : 할당 된 키의 개수 / 해시 버킷의 크기
  • 동적 확장시 모든 데이터들은 리해싱 작업을 거친다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.