Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Что такое хэш-таблица. Как ее реализовать на Дельфи?   Найти похожие ветки 

 
Галинка ©   (2006-05-30 22:09) [0]

Собственно сабж. Кто в курсе, помогите ))


 
Kolan ©   (2006-05-30 22:16) [1]

Смысл хеша вот какой: Допустим у вас есть таблица из имён:

Вася
Гриша
Саша

И вы хотите произвести поиск по таблице. Понятно что гораздо быстрее искать не сравнивая строки, а работая счислами.

Так вот, чтобы получить из строки число используется хеш функция, которая по строке получаетт число.

Сдесь возникает одна проблема - колизии. То есть разным строкам может быть поставлены в соответствие одинаковые строки.

PS
 В интернете по этому поводу много информации. В C есть наработки...


 
Галинка ©   (2006-05-30 23:00) [2]

в том то и дело что наработки есть в си... а мне надо все это в Дэльфи. К тому же мне это посоветовали для хранения объектов.


 
Галинка ©   (2006-05-30 23:26) [3]

У Бакнелла есть оказывается ))


 
Kolan ©   (2006-05-30 23:27) [4]

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

int I = 0;
 unsigned long Hash = 0;
while (*(StringToHash + I) != "\0")
 {
   Hash = (31 * Hash + *(StringToHash + I));
   I++;
 }
   return Hash;
 }


НА Delphi как-то так(давно писал уже не помню..):
Hash := 0;
for I := 1 to Lenghth(S) do
 Hash := 31*Hash + Length(S) + I;


А теперь можно искать по этому хешу...


 
Kolan ©   (2006-05-30 23:28) [5]

Уверен что для Delphi всё уже написано...


 
tesseract ©   (2006-05-31 10:11) [6]


> У Бакнелла есть оказывается ))

Причём не один раз.



Страницы: 1 вся ветка

Текущий архив: 2006.06.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
15-1147329255
pavel_guzhanov
2006-05-11 10:34
2006.06.18
23.05.2006 Москва. Borland Developers Studio 2006: продуктивность


15-1148249744
SkyRanger
2006-05-22 02:15
2006.06.18
Как извлечь из локального SVN номер релиза?


1-1147611184
___Vic
2006-05-14 16:53
2006.06.18
вызов окна из длл


15-1147685730
SamProf
2006-05-15 13:35
2006.06.18
Не могу поставит Delphi 8


1-1147606618
Коля
2006-05-14 15:36
2006.06.18
Безопасное удаление информации