我正在学习哈希表,但无法理解为什么我们哈希键。由于我们的哈希函数是幂等的,有什么意义?为什么不只使用哈希函数的输入来在我们的查询中使用?
我只知道javascript,所以也许这与为什么我不完全了解它有关。
答案 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个字符串。
这就是为什么哈希表必须实现冲突解决策略的原因。这也是为什么选择一个好的哈希函数很重要的原因:您希望尽可能消除那些冲突。