1. 개요

해시테이블(HashTable)이란?

<aside> 💡 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다.

</aside>

내부적으로 배열을 사용하여 데이터를 저장하기 때문에 빠르게 검색할 수 있다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f7661370-50df-455d-b127-07ba4a40d933/Untitled.png

해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다.

실제로 값이 저장되는 장소는 bucket 또는 slot 이라고 불린다.

예시 그림의 각 버킷

예를 들어 우리가 (Key, Value)가 ("John Smith", "521-1234")인 데이터를 크기가 16인 해시 테이블에 저장한다고 하자.

그러면 먼저 index = hash_function("John Smith") % 16 연산을 통해 index 값을 계산한다. 그리고 array[index] = "521-1234" 로 전화번호를 저장하게 된다.

해시테이블의 평균 **시간복잡도는 O(1)**이다.

Hash 함수(해시 함수)란?

  1. 해시 함수는 고유한 인덱스 값을 설정한다.
  2. 특정 값에 치우치지 않고 해시 값을 고르게 만들어 해시 충돌을 완화한다.