Hi!
Da das Projekt an sich in Java geschrieben ist, erspare ich euch spezielle Codes und versuche das Problem etwas abstrakter zu beschreiben.
Also, es geht um die Implementierung von
Extendible Hashing.
Ich glaube, es geht schneller wenn man kurz den Wiki-Artikel liest, als wenn ich mir einen Knoten in die Finger schreibe, um es zu erklären - allerdings ist auch für das eigentliche Problem nicht ganz so wichtig, wofür man es im Endeffekt braucht.
Wichtig ist im Prinzip folgendes: Man hat x Werte, die man da einfügen möchte (in meinem Fall sind es Integer-Werte) und damit man rausbekommt, in welches Bucket man sie einfügen muss, wird ihre Darstellung als Binärzahl gebraucht. (Allerdings immer nur die letzten Stellen). Und genau da liegt das Problem:
Es ist verdammt zeitaufwendig, diese Umwandlung von Dezimal nach Binär durchzuführen. Es gibt da in Java eine fertige Methode für, ich denke, die wird wohl schon das schneller sein, als wenn ich da jetzt was von Hand frickel.
Die Sache ist ja jetzt, dass man meist Sachen berechnet, die man nicht braucht. Als Beispiel mal folgendes:
Hash: 213.338.459 --> Binär: 1100 1011 0111 0100 1001 0101 1011
Davon brauche ich vllt. die letzten 4 oder 5 Stellen - also 11011 z.B.
Langer Rede kurzer Sinn:
Kennt jemand eine Möglichkeit, wie ich an diese Zahlen kommen könnte, ohne so viel Aufwand zu haben?
Insbesondere ist es wichtig, dass es die letzten Stellen der Binärdarstellung sein müssen, damit man schrittweise Stellen davor machen kann, wenn das Hashing es erfordert.
Ich denke, die Alternative, dass man die ersten Stellen nimmt und diese reversiert ist keine wirkliche, da das Reversieren ja auch kostet...
Grüße, Frederic