Ich suche nach einer Hochgeschwindigkeits-Hashfunktion mit guter (d. H. Nahezu gleichförmiger) Verteilung zur Verwendung in einer Hashtabellenimplementierung.Hashing-Algorithmus für Hashtabellenimplementierung
Die Hash-Tabelle wird ausschließlich zum Speichern von Werten mit einem Ganzzahlschlüssel verwendet.
Kann ich nur die unteren paar Bits der ganzen Zahl als Hash verwenden?
z.B. int key = n & 15; und erstellen Sie ein Array mit 16 Plätzen, um sie zu speichern.
Irgendwelche Empfehlungen?
Es gibt keine perfekte Hash-Funktion. Wenn Sie jedoch einige Algorithmen mit entsprechendem Quellcode möchten, sehen Sie hier: http://partow.net/programming/hashfunctions/index.html –
Die niedrigsten Bits zu nehmen ist wahrscheinlich das Schlimmste, was zu tun ist. (Aber: es hängt alles von dem Wertebereich ab, den Sie in Ihrer int-Taste erwarten) Versuchen Sie, auch die oberen Bits zu mischen, oder multiplizieren Sie mit einer ausreichend großen (ungerade, Primzahl) Zahl. Wissen was zu erwarten ist und messen Sie es. – wildplasser
Geben Sie Ihren Kommentar als Antwort und ich werde es akzeptieren. –