
해시함수란 임의의 길이를 갖는 어떤 데이터를 고정된 길이의 데이터로 매핑시키는 함수입니다.
해시 테이블 자료구조에서 사용되며, 빠른 데이터 검색을 위한 것으로 많이 쓰입니다. 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