В настоящее время мы имеем дело с хэш-функцией в моем классе. Наш инструктор попросил нас использовать функцию хеша в Интернете, чтобы сравнить с двумя, которые мы использовали в нашем коде.
Первый:
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 слов.
Я видел этот вопрос с несколькими примерами кода, но не был точно уверен, что искать в хэш-функции. Если я правильно понимаю, в моем случае хэш принимает вход (строку) и вычисляет математику, чтобы присвоить строку число и вставить ее в таблицу. Этот процесс выполняется для увеличения скорости поиска в списке?
Если моя логика звучит, есть ли у кого-нибудь хороший пример или ресурс, показывающий другую хеш-функцию, которая включает в себя строку? Или даже процесс написания моей собственной эффективной хэш-функции.