해시 테이블은 키와 해시함수, 그리고 버킷이라는 데이터를 저장하는 장소로 이루어짐.
- 키(key) - 고유한 값, 해싱함수의 인자값
- 해시 함수(hash function) - 키를 입력받은 후 키에 맞는 데이터가 저장 된 위치값을 반환(이 과정을 해싱이라고 함).
- 버킷(bucket) - 해시 함수를 통해 생성된 해시 값을 고유 주소(키)로 사용하며 키에 맞는 값(value)의 한 쌍으로 저장하는 장소.
해시 테이블은 데이터가 키-값의 한 쌍으로 이루어져있기 때문에 삽입, 삭제, 검색 등의 과정에서 모두 O(n)의 시간복잡도를 가짐.
키값이 순차적으로 생성되는 것은 아니므로 순서나 관계가 있는 배열에서 사용하는 것은 적합하지 않으며 해시충돌이 일어날 수 있음.
해시 충돌(hash collision)
해시 충돌이란 다른 키값을 입력했으나 같은 해시값이 반환되는 경우를 말함.
해결방법은 Chaining과 Open Addressing(개방 주소법)의 방법이 있음.
+) 읽어보기
[자료구조]해싱, 해시 테이블 그리고 Java HashMap
해시테이블은 해시함수를 사용하여 키를 해시값으로 매핑하고, 이 해시값을 색인 또는 주소 삼아 데이터(value)를 key와 함께 저장하는 자료구조이다.연관배열 구조: key와 value가 1:1로 연관되어있�
velog.io
[Algorithm](EN) Hash table implementation in C/C++
Practice makes perfect!
twpower.github.io
'STUDY > DSA' 카테고리의 다른 글
이분 탐색/이진 탐색(Binary Search) (0) | 2020.06.03 |
---|---|
기수 정렬(Radix sort) / 계수 정렬(Counting sort) (0) | 2020.06.02 |
힙 정렬(Heap sort) (0) | 2020.06.02 |
퀵 정렬(Quick sort) / 병합(합병) 정렬 (Merge sort) (0) | 2020.05.28 |
거품 정렬(Bubble sort) / 선택 정렬(Selection sort) / 삽입 정렬(Insertion sort) (0) | 2020.05.27 |