2017-03-22 5 views
0

Sie müssen einige Zahlen in einer Hash-Tabelle speichern. Kollisionen werden mit der geschlossenen Hash-Methode behandelt (keine Verkettung). Die Tabelle hat 4 Buckets und die Hash-Funktion ist KmodN, wobei N die Anzahl der Buckets ist. Die Befehle zum Speichern der Elemente werden unten angezeigt und in der angegebenen Reihenfolge ausgeführt. In welchem ​​Bucket (Index) wird die Nummer 8 gespeichert?Wie wird der Index beim Speichern der Hash-Tabelle angegeben?

hashtable.add(2) 
hashtable.add(4) 
hashtable.add(6) 
hashtable.add(8) 

Ich hoffe es ist einfach wie ich denke, ich würde mit 0 gehen?

+0

Ich denke, Sie müssen auch die Größe eines Eimers wissen, dann können Sie loslegen. Siehe https://en.wikipedia.org/wiki/Hash_table –

Antwort

0

Geschlossene Hash-Methode bedeutet, dass nur 1 Artikel/Eimer. Es gibt keine Verkettung, die gemacht wird. Daher würde hashtable.add(2) den Bucket position 0 besetzt machen.

Jetzt hashtable.add(8) würde auch Hash zu Bucket position 0. Dies ist eine Kollision.

In geschlossenen Hashing gibt es eine Wiederaufarbeitungsstrategie, wo wir andere Positionen versuchen, die von anderen Hash-Funktionen gegeben werden. Wenn eine leere Position gefunden wird, füllen wir das Element an dieser Position und wenn wir keine leere Position finden können, Wir deklarieren die Hash-Tabelle als voll.

Also, wenn Ihr rehash Funktionen Hash auf position 3, wird das Element zu diesem Eimer gehen, andernfalls wird es die Hashtabelle zu voll sein. Aber man kann nichts mit Bestimmtheit sagen, es sei denn, Sie geben Ihre Wiederaufarbeitungsstrategie an.

Verwandte Themen