按照算法导论的说法,就是利用下公式就行了。
h(k)=floor(m*(kA%1));
据研究发现 A 取(sqrt(5)-1)/2最好。
所以代码实现就相当简单了:
int hash_fun(int key) { return (2<<4)*(key*A-floor(key*A)); }