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;
    }

 

www.youtube.com/watch?v=jtMwp0FqEcg