Study
[데이터구조 & 알고리즘] Hash Function - djb2 개요
Devailean
2021. 3. 3. 09:57
djb2는 좋은 문자열 해시 함수이다. 훌륭하게 분산시키고 여러 키, 테이블 크기에서의 속도를 많이 줄여주어 다른 잘 알려진 함수보다 더 효율이 좋다.
이 알고리즘에서 왜 k를 33으로 쓰는 지 아직까지도 적절하게 설명은 안됐지만 다른 소수보다 훨씬 더 잘 작동한다.
unsigned long
hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}