Szukam funkcji szybkiego mieszania o dobrej (tj. Prawie równomiernej) dystrybucji do użycia w implementacji tabeli mieszania.Algorytm mieszania dla implementacji tabeli mieszania
Tablica haszów będzie używana wyłącznie do przechowywania wartości za pomocą klawisza liczby całkowitej.
Czy mogę użyć mniejszych bitów liczby całkowitej jako skrótu?
np. Int key = n & 15; i stworzyć tablicę z 16 slotami do ich przechowywania.
Jakieś rekomendacje?
Nie ma czegoś takiego jak idealna funkcja skrótu. Jeśli jednak potrzebujesz pewnych algorytmów z odpowiednim kodem źródłowym, zobacz tutaj: http://partow.net/programming/hashfunctions/index.html –
Podejmowanie najniższych bitów jest prawdopodobnie najgorszą rzeczą do zrobienia. (ale: wszystko zależy od zakresu wartości, których można się spodziewać w kluczu int) Spróbuj również wymieszać górne bity lub pomnóż z dużą liczbą (nieparzysta, pierwsza). Wiedz, czego się spodziewać i zmierzyć. – wildplasser
Dodaj komentarz jako odpowiedź, a ja to zaakceptuję. –