2017-06-30 142 views
0

我正在寻找一个函数,它接受一个字符串并返回一个处于动态数组范围内的值,基本上是一个动态哈希表,但是我很困惑在哪里开始时,我已经关闭了矢量,但我不知道哪个哈希函数对于运行时性能会有好处 - 我希望它快速且没有冲突,因此,如果您可以分享候选人资源,我会很乐意。实现或算法Hashtable/Map:从哪里开始

谢谢。

回答

0

那么,有很多因素需要考虑。一个是散列表的大小。哈希表只有在没有变形的情况下才会出现,因此一个大的素数会做,但是如果数字太大会浪费大量内存,所以必须考虑到您期望得到的数据量。同样的情况发生,如果你的素质低,你是强制创造重拍哈希。

有2个解决方案,我知道,以防止colisions: ü可以创建另一个哈希或数组列表内每次碰撞发生时你的哈希。

或者你也可以每次发生碰撞尝试将这些信息放入哈希表的下一个可用空间。

+0

它将是动态的,所以我只想要一个好的散列函数,它接受一个字符串并返回一个值。 – Whiteclaws

+0

嗯,我仍然给你你可以选择的2个选项,我会推荐第一个。每当一次碰撞发生,你就在那个地方创建一个散列。换句话说,如果发生碰撞事件,单词“hello”和“world”就会在那个地方创建第二个散列,例如像字符串的一部分一样使用。你可以尝试的另一件事是在键上使用sha256,而不是你知道它永远不会匹配的字符串。 –