2014-02-18 3 views
0

Я делаю программу, чтобы читать строки из файла в хэш-таблицу, используя отдельную цепочку, и я хочу использовать алгоритм хеширования djb2. Когда, например, я использую слово «welcome», я получаю хэш-индекс 7573091155873627. Означает ли это, что массив, содержащий мою хеш-таблицу, должен быть этим гигантским? Я только на самом деле надеюсь прочитать около 100 слов или около того. Я просто хочу быть уверенным, что у меня может быть таблица хеш-таблицы для хранения 100 элементов и по-прежнему использовать этот алгоритм.Как хэш-индекс относится к размеру массива?

+2

Обратите внимание на операцию останова. –

ответ

2

Когда вы помещаете запись в массив хэш-таблицы, ведра вы выбираете

hashvalue modulo size of the array 

Si нет никаких проблем, имеющих чрезвычайно большое значение хеш-функции. Напротив, они позволяют использовать произвольные большие массивы, что позволяет хэшировать любое количество элементов. Фактически, при стандартной реализации размер массива растет, когда массив хэшей становится слишком полным.

+0

Итак, даже если массив хэш-таблицы предназначен только для хранения 10 элементов, я все же могу использовать хеш-индекс, который составляет более 6 трлн. – Josh

+0

Число коллизий, генерируемых этим методом, пропорционально размеру рассматриваемого массива. – emcas88

+0

Да. Остальная часть 623492309482348 является числом в [0..9] – hivert

Смежные вопросы