Я изучаю программирование, и в школьной книге указано, что заданный ключ x, hashtable A [] и хеш-функция h() ключ x хранится в A [h (x) - 1] (с реализацией C++). Однако, используя в качестве хэш-функции функцию h (x) = xmodM, где M - длина хэш-таблицы, я не получаю, где хранятся ключи с mod 0. Например, если M = 10 и x = 60, где я должен хранить значение ключа? Спасибо заранее!Хеш-функции и хранение в хэш-таблице
0
A
ответ
1
Это зависит от того, как определяется h()
, если он принимает значения, начинающиеся с 1, то именно поэтому у вас есть -1
в этой формуле: h(x)-1
. Массивы в C++ индексируются начиная с 0.
Если вы вычислили напоминание о делении 60 на 10 в C++, вы получите значение 0
(60 % 10 = 0
). В этом случае нет смысла вычитать -1.
+0
Спасибо за ответ, я не мог согласиться больше. Дело в том, что книга становится немного запутанной, когда дело доходит до этого конкретного примера, и именно поэтому я спросил – gdaras
В книге, которую вы читаете, упоминаются хэш-функции типа 'h (x) = x mod M'? Книга, вероятно, предполагает, что хэш-функция возвращает значение в диапазоне от 1 до M (включительно). –
Собственно, это так! Вот почему я смущен. – gdaras
Возможно, найдется какая-нибудь другая книга? :) –