13강 Hash Table
Hash Tables : 연관된 데이터에 심볼을 연결시키는 심볼 테이블이다.

해쉬 테이블의 주요 함수?
Direct-address 테이블


direct addressing 의 문제점
Hash function의 문제점
Collision

chaining : 데이터를 체인으로 연결


Hash 함수 :
The division method 나머지를 이용 → 키가 특정 슬롯에 몰리지 않게 해야함(고르게 분포!)
h(k) = k mod m (나머지)

The multiplication method 키와 상수를 곱한 후 결과의 소수 부분을 이용

key k * 상수 A (0 < A < 1)
kA mod 1 또는 kA - kA의 정수부분(floor함수로 표현) → 이 값을 m과 곱합
h(k) = floor(m * (kA mod 1)) or floor(m * (kA - floor(k * A))
장점 : m이 소수일 필요도 없고 2의 거듭제곱을 사용할 수 있다.
단점 : 나눗셈 방법보다는 느리다.
Universal Hashing 악의적인 키(한쪽으로 몰리는 것) 선택에 대해 해시 테이블의 성능을 보장하는 방법이다. → 균일한 분포 보장


open addressing



Linear Probing

Double Hashing


15, 16강 Binary Search Trees - AVL Tree

