Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что такое хэш-таблица. Как ее реализовать на Дельфи? [D6, XP]


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

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


tesseract   (2006-05-31 10:11:00) [1]


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

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


Kolan   (2006-05-30 23:28:00) [2]

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


Kolan   (2006-05-30 23:27:00) [3]

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

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;


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


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

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


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

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


Kolan   (2006-05-30 22:16:00) [6]

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

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

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

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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо