你好 Christoph,
Sonst muesste man in einem Loch Platz fuer
zwei Werte haben, das bedeutet 2x soviel Speicher-Aufwand.Der zweite Wert ist ein popeliger Pointer auf die Subhashtabelle.
Das ist ja voellig Wuppe. Wenn ich statt 4 Byte pro Zelle 8 Byte brauche
(einen Pointer auf das Element, einen Pointer auf den Hash zweiter Ebene),
dann ueberlege ich mir das.
Wäre auch sonst ein Pointer auf die LinkedList.
Nein.
Die Information, die Du meinst zu brauchen ist boolscher Natur, der
Umstand, das das Loch belegt ist, das eine Kollisison überhaupt
stattfindet, ist schon ausreichend als Grund auf die zweite Hastabelle
zu wechseln.
Aeh, ja, das hat ja keiner bestritten. Aber ich brauche in jedem Loch 8
Byte statt 4 (wenn man von 4-Byte-Pointern ausgeht), wenn ich in einer
Zelle zwei Werte speichern muss (naemlich den neuen Hash zweiter Ordnung
und den alten Wert). Das macht bei einer Tabelle mit 2^16 = 65536
Elementen dann 256KB mehr. Packe ich jedoch auch das alte Element in die
Tabelle zweiter Ordnung, mit einer _anderen_ Hashfunktion oder einer
genaueren Hash-Funktion, dann kann ich mir das sparen.
再见,
CK
Ihr wisst nicht, wie man den Menschen dient. Wie sollt ihr wissen, wie man den Goettern dienen soll?
http://wwwtech.de/