Хеш-функция для строки

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

Первый:

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;
}

Где РАЗМЕР - 501 (размер хеш-таблицы), а ввод поступает из текстового файла, содержащего более 20 000 слов.

Я видел этот вопрос с несколькими примерами кода, но не совсем понимал, что нужно искать в хэш-функции. Если я правильно понимаю, в моем случае хеш принимает входные данные (строку) и выполняет математические вычисления, чтобы присвоить строке номер и вставить его в таблицу. Этот процесс сделан для увеличения скорости поиска в списке?

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

24
задан Community 23 May 2017 в 12:17
поделиться