我有一个简单的问题困在我的脑海里,一直困扰着我。我的教授简单地说散列函数是关键%arraysize。这对每个哈希表都必须这样吗?还是我们决定的东西?我们是否真的为我们创建的每个哈希表编写哈希函数?例如,它可以是不同的,简单地说,散列函数=密钥。散列函数和余数运算符
0
A
回答
0
通常,散列函数的域比其范围大得多。例如,散列可能接受“所有unicode字符串长度小于2^64个字符”并输出“16位数字”。
是的,对于少数应用程序,使用标识函数作为散列函数是有意义的,尽管散列表开始看起来非常像普通数组。
对于散列表,一般来说,模(%
)是一个不错的选择:它在计算上很容易,并且在通常情况下可以很好地展开。然而,它不是密码强大的,许多应用程序都需要这样做。
0
你有一个数组来存储索引所引用的固定大小的结果(在问题的情况下,index = key%array_size,保证产生一个介于0和array_size-1之间的数字)。如果索引大于数组大小,则会出现问题。如果它总是少于那么你就浪费了空间,所以散列的最后阶段往往是它必须适合的数组大小的模。
当然,这并不总是导致均匀传播因此您可以在之前修改的密钥作为索引。
相关问题
- 1. 按位余数运算符
- 2. 散列函数计算
- 3. 如何使用余数运算符
- 4. 散列函数和密钥
- 5. 散列函数
- 6. Python - 减少函数和|运算符
- 7. 三元运算符和函数签名
- 8. 对isset函数和运算符[? :]
- 9. OOP C++,虚函数和新运算符
- 10. 正确的散列算法/函数
- 11. 单向函数,散列算法
- 12. 的std :: bitset的散列函数算法
- 13. 重载函数运算符
- 14. 重载运算符函数==
- 15. 定义运算符()函数
- 16. 散列运算 - Angularjs
- 17. 参数列表中不允许多余的运算符?
- 18. 运算符=函数和添加函数似乎不能共存
- 19. 散列函数.NET
- 20. MD5散列函数
- 21. 在散列中不等于运算符?
- 22. 散列函数中发生重新散列时,赋值运算符重载不起作用
- 23. 链接列表复制构造函数和赋值运算符
- 24. 散列散列的智能匹配运算符
- 25. 在C++中调用+ =运算符函数中的运算符+函数
- 26. 良好的字符串散列函数
- 27. 字符串的散列函数
- 28. 字符串散列函数C
- 29. 字节为字符串散列函数?
- 30. 双向字符串散列函数