Chciałbym utworzyć tablicę asocjacyjną, która wyszukuje klucze w ciągach (ciągach) bajtów od 1 do 15 bajtów.Konstruowanie tabeli mieszania/funkcji mieszania
Chciałbym zapisać wartość całkowitą, więc wyobrażam sobie, że wystarczałaby tablica do mieszania. Mam trudności z konceptualizacją sposobu skonstruowania funkcji mieszania, tak aby dany klucz dał indeks do tablicy.
Każda pomoc będzie bardzo doceniona.
Maksymalna liczba wpisów w hash jest: * 15 + 4081 4081 * 14 + ... 4081 = 4081 ((15 * (16))/2) = 489720.
Tak na przykład:
int table[489720];
int lookup(unsigned char *key)
{
int index = hash(key);
return table[index];
}
Co to są dobre opcje dla funkcji skrótu, lub jak mam ją zaprojektować?
Dzięki.
Jeśli dwa klucze są odwzorowane na ten sam indeks, występuje kolizja, która nie jest poprawnie obsługiwana w przykładzie. Czy zachowałeś swój przykład po prostu po to, aby zilustrować twoje hashowanie, czy naprawdę potrzebujesz również dodatkowego wyjaśnienia na temat tabel hashujących? (otwarte hashing, zamknięte hashing, ...) – Patrick