Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > хеширование


Автор: Unionuser 26.8.2012, 19:39
Подскажите пожалуйста как прохешировать слово first?

Автор: boostcoder 26.8.2012, 20:05
алгоритмом хеширования.

Автор: NoviceF 27.8.2012, 12:00
Я вообще не в теме, но у Страуструпа видел такой пример хэширования, может это подтолкнёт копать в нужную сторону:

"Для поиска имени в таблице функция look() использует простой хэш-код (записи, в которых имена
имеют одинаковый хэш-код, связываются вместе):
Код

int ii = 0; // хэш-код
const char* pp = p;
while (*pp) ii = ii<<1 ^ *pp++;
if (ii < 0) ii = -ii;
ii %= TBLSZ;

Иными словами, с помощью операции ^ ("исключающее ИЛИ") все символы входной строки p
поочередно добавляются к ii. Разряд в результате x^y равен 1 тогда и только тогда, когда эти разряды в
операндах x и y различны. До выполнения операции ^ значение ii сдвигается на один разряд влево,

чтобы использовался не только один байт ii. Эти действия можно записать таким образом:
Код

ii <<= 1;
ii ^= *pp++;

Для хорошего хэш-кода лучше использовать операцию ^, чем +. Операция сдвига важна для получения
приемлемого хэш-кода в обоих случаях. Операторы
Код

if (ii < 0) ii = -ii;
ii %= TBLSZ;

гарантируют, что значение ii будет из диапазона 0...TBLSZ-1. Напомним, что % - это операция взятия
остатка".

Это Бьерн Страуструп. Язык программирования С++ страница 76

Автор: Unionuser 27.8.2012, 16:25
Спасибо большое.А можно устно рассказать в чем заключается хеширование по именам?Или подскажите какие нибудь сайты где можно поподробнее почитать про хеширование(для чайников),а то совсем не могу защитить курсовую((( 

Автор: feodorv 27.8.2012, 16:46
Цитата(Unionuser @  27.8.2012,  17:25 Найти цитируемый пост)
Или подскажите какие нибудь сайты

Ну, есть же https://www.google.ru/search?ie=UTF-8&hl=ru&q=%D1%85%D0%B5%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 или http://yandex.ru/yandsearch?text=%D1%85%D0%B5%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&clid=48648&lr=213

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)