해시함수
란 임의의 길이를 갖는 어떤 데이터를 고정된 길이의 데이터로 매핑시키는 함수입니다.
해시 테이블
자료구조에서 사용되며, 빠른 데이터 검색을 위한 것으로 많이 쓰입니다. key
를 해시함수에 넣어 Hash
를 구하고 이것은 저장위치로서 데이터를 꺼내올 수 있습니다. 다만 서로다른 key가 해시값은 같을 수도 있습니다. 이것을 해시충돌
이라고 합니다.
장점
해시테이블은 key-value가 1:1로 매핑되어 삽입, 삭제 등의 과정에서 평균적으로 O(1)의 시간복잡도를 가집니다.
단점
해시충돌
이 발생
체이닝은 저장소에서 충돌이 일어나면 기존 값과 새로운 값을 연결리스트로 연결하는 방법입니다.
해시충돌이 일어나면 다른 저장소에 데이터를 삽입하는 방식입니다.
선형 탐색(Linear Probing): 해시충돌 시 다음 버켓, 혹은 몇 개를 건너뛰어 데이터를 삽입
제곱 탐색(Quadratic Probing): 해시충돌 시 제곱만큼 건너뛴 버켓에 데이터를 삽입(1,4,9,16..)
이중 해시(Double Hashing): 해시충돌 시 다른 해시함수를 한 번 더 적용한 결과를 이용함!
출처
https://ko.wikipedia.org/wiki/해시_함수
https://preamtree.tistory.com/20