【问题标题】:Hash function for hash table with strings and integers as keys以字符串和整数为键的哈希表的哈希函数
【发布时间】:2013-05-02 02:29:39
【问题描述】:

我正在寻找一个可以在哈希表实现中使用的好的哈希函数。问题是我想在我的哈希函数中将字符串和整数都作为参数(键)。

我有一个包含约 500 个数据的 txt 文件,每个数据都包含整数和字符串(最多 15 个字符)。所以,我想做的事情是选择这些整数/字符串之一并将其用作我的哈希函数的键,以便将我的数据放入“正确”的存储桶中。

有什么好的功能可以做到这一点吗?

谢谢你:)

【问题讨论】:

    标签: c hashtable hash-function


    【解决方案1】:

    如果存在且分布合理,则使用整数值,如果不存在则散列字符串。计算整数哈希码比计算字符串便宜得多。

    显然,该算法必须是可重复的。

    【讨论】:

      【解决方案2】:

      你的问题有点含糊。目前尚不清楚您的数据集是否有 500 列,而您正在尝试找出用于散列的列,或者它是否有 500 个要散列的项目。

      如果您正在寻找能够产生分布良好的哈希值的体面的通用哈希,您可能需要查看Jenkins hash functions,它具有字符串和整数的变体。但是,坦率地说,如果您的数据集有 500 个固定项,您可能需要查看一个完美的哈希函数生成器,例如 GNU gperf,或者甚至是其他数据结构,具体取决于您的数据。

      【讨论】:

      • 它有 500 个项目,我想通过使用字符串和 int 键来散列
      • 使用我链接到的 Jenkins 哈希。应该没问题。
      【解决方案3】:

      由于您想使用两个键进行散列,我认为使用两个键可以改善分布。

      对于字符串散列,我使用 PJW 算法得到了很好的结果。只需谷歌搜索“PJW 哈希字符串”。一种变化here 要使用整数增加哈希,see here

      【讨论】:

        猜你喜欢
        • 2012-10-03
        • 1970-01-01
        • 2015-03-09
        相关资源
        最近更新 更多