【发布时间】:2013-02-20 15:18:21
【问题描述】:
我正在使用以下哈希函数
function hash_djb2($str){
$hash = 5381;
$length = strlen($str);
for($i = 0; $i < $length; $i++) {
$hash = (($hash << 5) + $hash) + ord(strtolower($str[$i])) - 96;
}
return $hash;
}
我应该返回$hash 还是$hash % $numBuckets,其中$numBuckets 是哈希表中的桶数?
前者会返回非常大的数字,并且不会发生哈希冲突,而后者只会返回 0 到 $numBuckets-1 之间的值,但可能会发生哈希冲突
【问题讨论】:
-
$numBuckets是什么? -
哈希表中的桶数
-
基于c version 我会说
$hash -
我认为c版本只是djb2的一个例子,它是如何工作的。这不是 HashTable 类的 djb2 的工作示例