열심히 살아나갈 사람
article thumbnail
Published 2023. 12. 6. 21:51
해시 테이블(Hash Table) Data Structure

해시 테이블(Hash Table)은 키를 값에 연결하여, 하나의 키가 0 또는 1개의 값과 관련되는 것을 허용하는 자료구조입니다. 이는 키를 통해 데이터를 빠르게 검색할 수 있게 해주는 구조입니다.


해시 테이블은 해시 함수를 사용하여 키를 해시 코드라는 숫자로 변환하고, 이 해시 코드를 인덱스로 사용하여 값을 배열에 저장합니다. 이 때, 서로 다른 키가 동일한 해시 코드를 생성하는 경우를 해시 충돌이라고 합니다.

해시 충돌을 해결하기 위한 방법은 여러가지가 있습니다. 

1. 체이닝(Chaining) : 같은 해시 코드를 가진 항목들을 연결 리스트로 관리하는 방법입니다. 충돌이 발생하면, 해당 인덱스에 리스트를 만들어 추가하는 방식입니다.

2. 오픈 어드레싱(Open Addressing) : 충돌이 발생하면, 다른 해시 버킷에 데이터를 저장하는 방법입니다. 이 방법은 선형 탐사, 제곱 탐사, 이중 해싱 등의 방식으로 충돌을 해결할 수 있습니다.

해시 테이블은 키-값 쌍을 저장하고 검색하는데 매우 효율적인 자료구조로, 평균적으로 O(1)의 시간 복잡도를 가집니다. 그러나 최악의 경우(모든 키가 동일한 해시 코드를 가지는 경우)에는 모든 키를 검색해야 하므로 O(n)의 시간 복잡도를 가질 수 있습니다.

또한, 해시 테이블은 공간 복잡도 면에서도 주의가 필요합니다. 충분한 수의 버킷이 없으면 해시 충돌이 빈번하게 발생하고, 반대로 버킷 수가 너무 많으면 메모리 공간이 낭비될 수 있습니다. 따라서, 적절한 버킷의 수를 설정하는 것이 중요합니다.

해시 테이블은 데이터베이스, 캐싱, 키-값 저장 등 다양한 분야에서 사용되며, 특히 빠른 검색 속도가 필요한 분야에서 많이 활용됩니다.

'Data Structure' 카테고리의 다른 글

시간복잡도  (0) 2023.12.07
그래프 (Graph)  (0) 2023.03.24
자료구조 (Data Structure)  (0) 2023.03.22
트리 (Tree)  (0) 2023.03.20
큐 (Queue)  (0) 2023.03.20
profile

열심히 살아나갈 사람

@쿼리_

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!