对数字的关键字有不少门道,构造哈希函数这块就挺关键的。尤其是像除留余数法平方取中法这些方法,用起来挺灵活,适合做快速查找的哈希表结构。像我平时写点缓存模块或者搜索引擎的索引,都得靠它们出马。

直接定址法的特点是快,适合关键字本身就能当地址用的场景。比如学号、身份证号这类有结构的值,用它就比较合适。

平方取中法折叠法有点像玩数学技巧,适合数据范围比较集中但又不是规则的情况,用来打乱分布效果还不错。

还有除留余数法,嗯,应该是最常用的一种。是搞哈希表时,用一个素数作为除数,冲突少,效率也高。适配各种场景都挺稳的。

随机数法听起来挺随意,但在密码学、验证码这类需求的时候,还蛮好用的。,真要搞安全级别的哈希,推荐看看 SQL Server 中的 MD5 哈希函数,工业级别的哈希,稳!

你要是搞数据结构的教学课件、或者正在写哈希相关的功能,这份资源挺合适的。重点方法都囊括了,配合hash_lookup3 函数这样的实际例子用起来更带感。

如果你平常用 MATLAB 比较多,可以看看最小损失哈希码这个思路,还挺有意思的,用在图像搜索或机器学习里都不错。