Двойное хеширование - HashValues ​​вне диапазона HashTable

У меня здесь домашнее задание о двойном хешировании, и я ставлю на одну точку:

У меня есть массив: 17, 6, 5, 8, 11, 28, 14, 15 h1(k) = k mod 11, h2(k) = 1 + (k mod 9), размер хеш-таблицы = 11 Хеш-функция из этого: dh(k) = k mod 11 + (j + (k mod 9).

Теперь я вычисляю хеш-значения:

h(17) = k mod 11 = 6 - OK
h( 6) = 6 = collision => 6 + (1 + (6 mod 9) = 12 = NOK 

=> это вне диапазона моих Индексов, и с каждым большим индексом он также будет выше. Если я изменю добавление второго HashFuncion в вычитание, то HashValues ​​попадет в негативы - что тоже не хорошо.

Что я делаю неправильно?

Спасибо зузана

1 ответ

Я думаю, что вы неправильно интерпретируете, как рассчитать индекс для двойного хэша. Индекс должен быть

(h1(k) + j · h2(k)) мод TableSize

Таким образом, формула, которую вы должны использовать с этими двумя хэш-функциями, будет

((k mod 11) + j · (1 + (k mod 9))) mod 11

Другие вопросы по тегам