요약
- 키-값 쌍 형태로 데이터를 빠르게 검색하고 저장할 수 있는 자료구조이다.
- 해시 함수를 이용하여 해시 테이블을 만들고 해시 값을 배열의 인덱스로 변환하여 데이터를 저장하거나 검색한다.
내용
특징
- 키-값 쌍 형태로 데이터를 빠르게 검색하고 저장할 수 있는 자료구조이다.
- 해시를 활용한 자료구조를 해시 테이블이라고 한다.
- 키를 해시 함수에 입력하여 얻은 해시 값을 배열의 인덱스로 변환하여 데이터를 저장하거나 검색하는 방식으로 동작한다.
핵심 개념
- 해시 함수
- 입력 데이터를 고정된 크기의 해시 값으로 변환하는 함수이다.
- 해시 테이블
- 해시 함수를 통해 생성된 해시 값을 인덱스로 사용해 데이터를 저장하는 자료 구조이다.
- 버킷
- 해시 테이블의 인덱스는 버킷이라고 한다.
- 버킷에는 하나 이상의 데이터가 정될 수 있다.
주요 연산
충돌 해결
- 해시 테이블의 모든 키가 고유한 해시 값을 가질 수 없으므로, 충돌이 발생할 수 있다. 충돌을 해결하기 위한 방법은 다음과 같다.
- 체이닝
- 해시 충돌이 발생하면 해당 버킷을 연결 리스트로 구성하여 여러 값을 같은 버킷에 저장할 수 있도록 한다.
- 검색 시, 버킷 내 연결 리스트를 순회하여 키를 찾는다.
- 개방 주소법
- 충돌이 발생하면 다른 빈 버킷을 찾아 데이터를 저장하는 방식이다.
사례
구현체
참고