Я много читал о хеш-таблицах и о том, как их реализовать в C, и я думаю, что у меня есть почти все концепции в моей голове, поэтому я могу начать писать свои собственные, у меня просто пара вопросов, которые я еще не правильно понял.
В качестве справки я читал это:
http://eternallyconfuzzled.com/jsw_home.aspx
1) Как я читал на сайте выше, для размера хэш-таблицы рекомендуется использовать степень двойки или простое число. В основном это массив, а массив имеет фиксированный размер, поэтому я могу быстро найти нужное значение. Я не могу объявить небольшой массив, если у меня большой ввод, поскольку он не помещается, и я не могу объявить очень большой массив, если мои входные данные не настолько велики, потому что они тратят впустую память.
Каков оптимальный размер хеш-таблицы? На чем я должен основывать свое решение?
2) Кроме того, на этом сайте есть пара функций хеширования, которые я еще не прочитал. В нем также говорится, что всегда лучше использовать хорошо известный алгоритм и использовать мой собственный. И я мог бы сделать это, я выберу один с этого сайта и протестирую его в своем коде и посмотрю, минимизирует ли он коллизии на основе моих входных данных.
Что меня беспокоит, так это то, как я контролирую диапазон хэшей? Хеш не может быть возвращен, и его целое число больше, чем размер хеш-таблицы, иначе у нас возникнет серьезная проблема. Как мне с этим справиться?