공부/JUN STUDY
탐색을 위한 해시 (해시가 값 검색을 위해 사용되는 원리)
JUNFUTURE
2021. 11. 11. 20:41
탐색을 위한 해시
해시 목적 : 탐색을 엄청나게 빨리 하기 위함 ⇒ 해시 값을 키로 이용하면
배열로 원하는 데이터에바로 접근할 수 있음
탐색 할때는 해시 함수 결과를 해시 주소(인덱스)로 해석
키 : 값의 개념으로 direct 접근
근데 충돌 무조건 발생함 -> 잘 관리하자
충돌관리
- 슬롯 여러개 관리 : 슬롯 만들어서 같은 해시주소에 여러개 저장가능하게!
- 선형 조사법 : 슬롯 오버플로나면 다른 해시 주소(바로 다음)에 저장 ⇒ 선형조사법
- 근데 이러면 군집화 현상 발생.
- 군집화 : 특정 지역에 키 값이 몰리는 현상(앞 찼네? 바로 뒤로.. 찼네?? 바로 뒤로..)
- 이차 조사법 : 키가 몰리는거 방지하기위해 다른 위치(4칸 뒤, 8칸 뒤..)로 점프해서 저장토록하면??? ⇒ 이차조사법
- 근데 이거 규칙 일정하면 또 2차 군집화 가능
- 이중 해싱 : 해시 함수 한번더!!! ⇒ 이중해싱
- 채이닝 : 슬롯을 연결리스트로 관리 (n의 시간복잡도)