var loseloseHashCode = function (key) { var hash = 0; for (var i = 0; i < key.length; i++) { hash += key.charCodeAt(i); } return hash % 37; }; this.put = function(key, value) { var position = loseloseHashCode(key); //{5} console.log(position + ' - ' + key); //{6} table[position] = value; //{7} };问题:看到某本书上的散列函数最后return hash %37,我测试这样会出现覆盖啊。比如当key='Abc'和key='fbc'的时候,因为Abc的ASCII码值之和=262,而fbc的ASCII值之和=299。他们两个各自Mod37=3。所以都会在position=3这个位置上插入一个值,最后结果产生覆盖。书上上是为了比较小的数值,但这样会产生覆盖啊,这样是散列函数的本义吗?
添加回答
举报
0/150
提交
取消