Линейный зонд в открытой адресации - PullRequest
0 голосов
/ 23 июня 2010

У меня есть массив с размером m = 11, и моя хеш-функция - метод деления: h(k) = k mod m У меня есть целое число k = 10 и 10 mod 11 is -1, так где я должен поместить этот ключ в массив?Я должен положить этот ключ в слот, индекс которого равен 10?пожалуйста, помогите мне спасибо

РЕДАКТИРОВАНИЕ: для получения моего ответа, например, у меня есть целые числа, такие как k = 10,22,31,4,15,28,17,88,59

массив будет выглядеть так? спасибо

10  9   8   7   6   5   4   3   2   1   0     index
10  31  59  17  28  4   15          88  22    keys

1 Ответ

0 голосов
/ 23 июня 2010

Как обычно, 10 мод 11 - 10, так что да, вы обычно используете индекс 10.

Редактировать: Обобщать: по крайней мере, как обычно, с учетом двух положительных входных данных, по модулю всегда будет получаться положительный результат. Таким образом, ваши вопросы о том, что делать с отрицательными результатами, на самом деле не имеют смысла в отношении нормального определения.

Если у вас действительно есть возможность получить отрицательный результат, моя немедленная реакция будет состоять в том, чтобы переключиться на какой-то язык, который даст разумный результат. Если вы не можете этого сделать, то вы, вероятно, захотите переместить значение в правильный диапазон, добавив m к отрицательному числу, пока не получите число в диапазоне [0..m), чтобы оно соответствовало нормальному определение mod, затем используйте его в качестве индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...