我一直在閱讀很多關於哈希表的知識,以及如何在C語言中實現,我想我幾乎擁有了所有的概念,所以我可以開始編寫自己的代碼,我只是有幾個問題我還沒有正確理解。關於哈希表的幾個問題
作爲參考,我一直在閱讀這樣的: http://eternallyconfuzzled.com/jsw_home.aspx
1)正如我已閱讀上述網站,二的冪或素數對被推薦用於散列表的大小。這基本上是一個數組,並且數組的大小是固定的,所以我可以快速查找我正在查找的值。我不能聲明一個小數組,如果我有一個很大的輸入,因爲它不適合,我不能聲明一個非常大的數組,如果我的輸入數據不是那麼大,因爲它浪費了內存。
什麼是散列表的最佳大小?我應該根據什麼決定?
2)此外,在該網站上,有一些哈希函數,我還沒有閱讀它們。它還指出,最好使用一個衆所周知的算法並推出我自己的算法。我可以做到這一點,我會從該網站挑選一個並在我的代碼上進行測試,並根據我的輸入數據查看是否最小化了衝突。
什麼在擾亂我是如何控制散列範圍?哈希無法返回,並且整數大於哈希表大小,否則我們會遇到嚴重問題。我如何處理這個問題?
對於第一個問題,我仍然沒有幫助,我的意思是,我不能只是將一個隨機數作爲哈希表大小。我如何選擇一個?你是什麼意思,「我不知道如何使這個2.」? – 2010-02-20 23:52:19
一個相當不錯的答案。 OCaml哈希表類似於您所描述的自動調整大小。重新「我如何控制散列範圍」你不知道。這是它的美麗。你只需要使用運行時的哈希表就好像它們是世界上最好的東西,而且它們只是(以一個常數)。 – 2010-02-21 00:00:23