2017-06-30 145 views
0

我正在尋找一個函數,它接受一個字符串並返回一個處於動態數組範圍內的值,基本上是一個動態哈希表,但是我很困惑在哪裏開始時,我已經關閉了矢量,但我不知道哪個哈希函數對於運行時性能會有好處 - 我希望它快速且沒有衝突,因此,如果您可以分享候選人資源,我會很樂意。實現或算法Hashtable/Map:從哪裏開始

謝謝。

回答

0

那麼,有很多因素需要考慮。一個是散列表的大小。哈希表只有在沒有變形的情況下才會出現,因此一個大的素數會做,但是如果數字太大會浪費大量內存,所以必須考慮到您期望得到的數據量。同樣的情況發生,如果你的素質低,你是強制創造重拍哈希。

有2個解決方案,我知道,以防止colisions: ü可以創建另一個哈希或數組列表內每次碰撞發生時你的哈希。

或者你也可以每次發生碰撞嘗試將這些信息放入哈希表的下一個可用空間。

+0

它將是動態的,所以我只想要一個好的散列函數,它接受一個字符串並返回一個值。 – Whiteclaws

+0

嗯,我仍然給你你可以選擇的2個選項,我會推薦第一個。每當一次碰撞發生,你就在那個地方創建一個散列。換句話說,如果發生碰撞事件,單詞「hello」和「world」就會在那個地方創建第二個散列,例如像字符串的一部分一樣使用。你可以嘗試的另一件事是在鍵上使用sha256,而不是你知道它永遠不會匹配的字符串。 –