Двойное хеширование дает число больше размера таблицы
У меня есть хэш-таблица размером 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