Hash Table

Heejin·2023년 5월 30일
0

해시 테이블(Hash Table)은 효율적인 데이터 구조로, 키-값(key-value) 쌍을 저장하는 자료구조이다. 해시 테이블은 일반적으로 배열과 같은 선형 구조를 기반으로 하며, 키(key)를 해시 함수를 사용하여 배열의 인덱스로 변환한 후 해당 인덱스에 값을 저장한다. 이를 통해 키-값 쌍을 빠르게 삽입, 검색, 삭제할 수 있다.

해시 테이블은 해시 함수를 이용하여 키를 해시 값으로 변환한다. 해시 함수는 임의의 길이를 갖는 입력을 받아 고정된 길이의 해시 값으로 변환하는 함수이다. 이 해시 값은 배열의 인덱스로 사용되어 키-값 쌍을 저장하는 버킷(bucket)에 할당된다. 이때, 서로 다른 키가 동일한 해시 값으로 변환될 수 있으므로 충돌(collision)이 발생할 수 있다.

해시 테이블의 주요 특징은 다음과 같다:

  1. 빠른 검색 및 삽입: 해시 함수를 통해 키를 해시 값으로 변환하고, 이를 배열의 인덱스로 사용하기 때문에 키-값 쌍의 검색과 삽입이 빠르다. 일반적으로 시간 복잡도는 O(1)에 가깝다.
  2. 유연한 크기 조정: 해시 테이블은 동적으로 크기를 조정할 수 있다. 필요에 따라 버킷 배열의 크기를 확장 또는 축소하여 저장 공간을 최적화할 수 있다.
  3. 충돌 해결: 서로 다른 키가 동일한 해시 값으로 변환될 때 충돌이 발생한다. 해시 테이블은 충돌을 처리하기 위한 충돌 해결 방법을 사용한다. 대표적인 방법으로는 체이닝(chaining)과 개방 주소법(open addressing)이 있다.

해시 테이블은 많은 프로그래밍 언어에서 제공되는 자료구조이다. C++에서는 std::unordered_map, Java에서는 HashMap, Python에서는 dict가 해시 테이블의 구현 예시이다. 이를 통해 효율적인 데이터 검색 및 삽입을 수행할 수 있다.

0개의 댓글