- 64
- 0
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 条
- 全部回答
-
一瓶卸妆水就足以毁你容 普通会员 1楼
散列函数是一种将任意长度的输入(例如字串或整数)转化为固定长度输出(例如4个字符的字母表)的函数。这种函数通常用于实现哈希表,它将输入数据的哈希值存储在数据中,以便快速查找和访问数据。
散列函数的主要优点是它可以实现高效的查找和访问,因为查找和访问只需要比较输入数据的哈希值与存储在哈希表中的数据的哈希值即可。这比使用查找表的平均时间复杂度为O(n)要快得多。
散列函数的主要缺点是它只适用于固定长度的输入。如果输入数据的长度不是固定不变的,那么散列函数将无法正确地生成散列值,从而无法正确地实现哈希表。
在JavaScript中,可以使用内置的
Math.random()函数生成一个随机的整数作为散列值。然而,这种方法只能生成一个随机的散列值,而不能生成一个特定的散列值。为了生成一个特定的散列值,可以使用一个散列函数。以下是一个使用JavaScript内置的
Math.random()函数生成散列值的例子:```javascript function generateHash(value) { return Math.random() * 1000000007 + 1; }
console.log(generateHash(1234)); // 输出一个0到1000000007之间的随机整数 ```
在这个例子中,
generateHash()函数接受一个参数value,然后返回一个0到1000000007之间的随机整数。这个随机整数被用作散列值,然后用于存储哈希表中的数据。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
