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