【问题标题】:hash table compression function哈希表压缩函数
【发布时间】:2021-08-24 03:11:29
【问题描述】:

朋友们怎么样,我有一个查询,因为我找不到太多关于它的信息,我如何实现一个压缩散列函数来订购 10 个车牌?车牌由3个数字和3个字母组成,有人可以举个例子来支持我。

【问题讨论】:

  • 嗨,路易斯,欢迎来到堆栈溢出。你的问题很模糊。您使用什么语言?我们需要更多背景信息才能提供帮助。
  • 我还没有真正编程过,我只是想了解能够做到这一点的算法,一些如何计算压缩哈希的示例。
  • 问题需要更加具体才能获得高质量的答案。也许从维基百科开始学习什么是哈希函数,然后回到这里询问任何具体的问题。

标签: hash compression hashtable


【解决方案1】:

一种简单的方法是将值并排排列在内存中,然后在该内存块上运行现有的哈希函数。即使是 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);

如果您想知道为什么这通常是合理的,请查看this question

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 2016-03-25
    • 2011-02-27
    • 1970-01-01
    • 2014-05-31
    • 2012-09-22
    • 2017-01-22
    • 1970-01-01
    • 2021-01-23
    相关资源
    最近更新 更多