【问题标题】:Hashtable/Map: where to start哈希表/地图:从哪里开始
【发布时间】:2017-12-03 21:00:16
【问题描述】:

我正在寻找一个函数,它接受一个字符串并返回一个动态数组范围内的值,基本上是一个动态哈希表,但我对从哪里开始感到很困惑,我有向量下来,但我不知道哪个散列函数可能对运行时性能有好处——我希望它速度快且没有冲突,因此,如果你能分享一些关于候选实现或算法的资源,我会很高兴

谢谢。

【问题讨论】:

    标签: algorithm performance vector hashmap hashtable


    【解决方案1】:

    嗯,有很多因素需要考虑。一是哈希表的大小。哈希表只有在没有 colisions 的情况下才是好的,所以一个大的素数就可以了,但是如果数字太大,你会浪费很多内存,你必须考虑你期望的数据量。如果您的质数太低,也会发生同样的情况,您必须重新创建哈希。

    我知道有 2 种解决方案可以防止发生碰撞: 每次发生冲突时,您都可以在哈希内创建另一个哈希或数组列表。

    或者您也可以在每次发生碰撞时尝试将该信息放在哈希表的下一个可用空间中。

    【讨论】:

    • 它将是动态的,所以我只想要一个好的散列函数,它接受一个字符串并返回一个值。
    • 好吧,我还是给了你可以选择的 2 个选项,我会推荐第一个。每次发生碰撞时,您都会在该位置创建一个哈希。换句话说,如果在单词“hello”和“world”中发生冲突,你将在那个地方创建第二个哈希,例如使用字符串的类似部分。您可以尝试的另一件事是在您的键上使用 sha256,而不是您知道它永远不会匹配的字符串。
    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多