hash - 哈希表压缩函数
问题描述
朋友们怎么样,我有一个查询,因为我找不到太多关于它的信息,我如何实现一个压缩哈希函数来订购 10 个车牌?车牌由 3 个数字和 3 个字母组成,有人可以举个例子来支持我。
解决方案
一种简单的方法是将值并排排列在内存中,然后在该内存块上运行现有的哈希函数。对于大多数用途,即使是 CRC 函数也会产生足够好的结果。
另一种方法是从数字中选择任何产生良好哈希的函数,然后依次对每个部分进行哈希(或者在紧要关头只使用数字 -身份哈希- 这将是字母的 ASCII/Unicode/etc 值) : 3 个数字,然后是 3 个字母,为您提供六个哈希值 - 假设您已将数组元素放入,然后您可以按如下方式组合h[0]
:h[5]
size_t x = 0;
for (int i = 0; i < 5; ++i)
x ^= h[i] + 0x9e3779b9 + (x<<6) + (x>>2);
如果您想知道为什么这通常是合理的,请查看此问题。
推荐阅读
- python - 如何在python中创建一个自写的静态函数库
- android - 如何全局检测设备是否处于手势导航状态?
- react-native - 在 React Native 上使用 Share.shareSingle
- c# - c# 新闻文章标题的组合框
- python - 将 pyvis 图形导出为矢量或 .png 图像。有办法吗?
- loopback - 排序相关字段环回4 - postgres
- wordpress - 用辅助 WordPress 替换主菜单
- python - Python3 ThreadingHTTPServer 无法发送分块编码响应
- type-hinting - 关于 Python 3.9+ 中类型提示的问题
- c# - 使用 ClosedXML 冻结特定行