Я хотел бы построить хеш-таблицу, которая ищет ключи в последовательностях (строках) байтов в диапазоне от 1 до 15 байт.Построение хэш-таблицы/хэш-функции
Я хотел бы сохранить целочисленное значение, поэтому я предполагаю, что массив для хеширования будет достаточным. Мне сложно понять, как построить хэш-функцию таким образом, чтобы данный ключ дал индекс в массив.
Любая помощь была бы значительно увеличена.
Максимальное число записей в хеша: 4081 * 15 + 4081 * 14 + ... = 4081 4081 ((15 * (16))/2) = 489720.
Так, например:
int table[489720];
int lookup(unsigned char *key)
{
int index = hash(key);
return table[index];
}
Что такое хороший выбор для хеш-функции или как я могу ее построить?
Спасибо.
Если два ключа сопоставлены с одним и тем же индексом, у вас есть столкновение, которое неправильно обрабатывается в вашем примере. Вы сохранили свой пример просто для иллюстрации своего хеширования, или вам действительно нужно дополнительное объяснение о самих хэш-таблицах? (открытое хеширование, закрытое хеширование, ...) – Patrick