哈希表-为什么我们要对键进行哈希运算,而不是仅使用输入作为键?

时间:2018-07-12 16:44:37

标签: javascript data-structures hashtable

我正在学习哈希表,但无法理解为什么我们哈希键。由于我们的哈希函数是幂等的,有什么意义?为什么不只使用哈希函数的输入来在我们的查询中使用?

我只知道javascript,所以也许这与为什么我不完全了解它有关。

2 个答案:

答案 0 :(得分:2)

因为它更快。根据所涉及的值,使用输入本身将是昂贵得多的计算。由于它是一种通用算法,必须处理许多类型的os值,因此使用值比字符串本身要好得多。

答案 1 :(得分:0)

您说:

  

由于哈希函数的每个唯一输入都会产生相同的唯一输出,所以有什么意义呢?

该陈述显然是错误的。

例如,如果您的密钥是16个字符的字符串,而您正在创建32位哈希码,那么到Pigeonhole Principle,您将发生冲突。

有2 ^ 32(40亿个,且要更改)可能的32位整数。即使您的16个字符的字符串限制为26个字母字符和0-9数字,您仍然可以使用36 ^ 16(7.95 e24)个字符串。因此,每个可能的哈希码平均有1,853,020,188,851,841个字符串。

这就是为什么哈希表必须实现冲突解决策略的原因。这也是为什么选择一个好的哈希函数很重要的原因:您希望尽可能消除那些冲突。