Двойное хеширование дает число больше размера таблицы

У меня есть хэш-таблица размером 11, реализованная в виде массива. Я пытаюсь использовать технику двойного хэша; Я уже сделал большинство моих номеров. Моя функция хеширования выглядит следующим образом:

h1 = key mod 11
h2 = 3*key mod 4

Это дает мне h(k,i) = k mod 11 + i(k * 3 mod 4) где я = 0, 1, 2, 3, ...

У меня уже есть заполненные слоты 0, 1, 4, 8, 9 и 10. Я пытаюсь вставить 19. Это мой результат для хэширования 19:

1st time: 8  <-- collision 
2nd time: 9  <-- collision 
3rd time: 10 <-- collision 
4th time: 11 <--- well there is no index 11 table ends with index 10

Что я должен делать?

Кроме того, когда они говорят: "Пусть таблица имеет 11 слотов", означает ли это, что хеш-таблица имеет доступные слоты от 0 до 10?

1 ответ

Решение

Это изменение исправит неправильный расчет индекса хеш-таблицы:

h(k,i) = (key + i*(key*3 mod 4)) mod 11
Другие вопросы по тегам