Хеш-функция для строки
В настоящее время мы занимаемся хэш-функцией в моем классе. Наш инструктор попросил нас использовать хеш-функцию в Интернете для сравнения с двумя, которые мы использовали в нашем коде.
Первый:
int HashTable::hash (string word)
// POST: the index of entry is returned
{ int sum = 0;
for (int k = 0; k < word.length(); k++)
sum = sum + int(word[k]);
return sum % SIZE;
}
Во-вторых:
int HashTable::hash (string word)
{
int seed = 131;
unsigned long hash = 0;
for(int i = 0; i < word.length(); i++)
{
hash = (hash * seed) + word[i];
}
return hash % SIZE;
}
Где SIZE - 501 (размер хеш-таблицы), а входные данные поступают из текстового файла, содержащего более 20 000 слов.
Я виделэто вопрос с несколькими примерами кода, но не совсем уверен, что искать в хэш-функции. Если я правильно понимаю, в моем случае хеш принимает входные данные (строку) и выполняет математические вычисления, чтобы присвоить строке номер и вставить ее в таблицу. Этот процесс делается для увеличения скорости поиска в списке?
Если моя логика правильная, есть ли у кого-нибудь хороший пример или ресурс, показывающий другую хеш-функцию, которая включает строку? Или даже процесс написания моей собственной эффективной хэш-функции.