0
我被要求使用數組實現哈希映射。我需要下面的鍵插入:HashMaps - 不清楚哈希函數和雙重哈希
15, 7, 26, 39, 11, 9, 27, 5, 18, 2, 54, 22, 4
成大小19的陣列使用散列函數:
(3x + 7) % 19
使用線性探測,我期望得到,如果下面的數組(指正我「M錯誤):
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Key: 4 11 5 18 7 26 39 27 2 15 9 22 54
其中26曾在索引9與7的碰撞,所以插入在索引10和39,然後在索引10有碰撞26等等插入在索引11。
我現在試圖在HashMap的數組實現中插入相同的元素,使用雙散列而不是線性探測。我給出的第二個散列函數是:
11 - (x % 11)
我有兩個問題:
這是否意味着我的陣列將是大小11或19還?
我最初是否使用原始散列函數,如果給定索引是空閒的,請在那裏插入元素,否則如果發生衝突,請使用第二個散列函數並在那裏插入元素?
這就是我的想法,因爲我剛剛意識到有超過11個元素,所以會有大量的碰撞,至少其中之一是不可避免的 – KOB