Wie Suche ich in einer hash-Tabelle?

Ich habe gerade angefangen zu lernen, über hash-Tabellen, und ich verstehe, wie legen aber nicht, wie suchen. Diese sind die algorithmen werde ich stützend auf diese Frage aus:

Hashing-Schlüssel

int Hash (int key) {
    return key % 10;  //table has a max size of 10
}

Linear probing for collision resolution.

Angenommen, ich nenne legen Sie sich zweimal mit den Tasten 1, 11 und 21. Dies würde die Rückkehr slot 1 für alle 3 keys. Nach der Kollision Auflösung würde die Tabelle haben die Werte 1, 11 und 21 an den slots 1, 2 und 3. Dies ist, was ich annehmen würde passieren mit meinem Verständnis einfügen.

Nachdem Sie dies tun, wie würde ich die slots 2 und 3, wenn ich bei der Suche nach den Schlüsseln 11 und 21? Von dem, was ich gelesen habe, suchen Sie eine hash-Tabelle sollte buchstäblich die gleiche Sache, wie das einfügen, außer, wenn Sie ankommen an den gewünschten Steckplatz, kehren Sie den Wert an, der Steckplatz anstelle von einsetzen etwas in Sie hinein.

Wenn ich das wörtlich nehmen und anwenden des gleichen Algorithmus, wenn ich nach dem Schlüssel 11 ich ankommen würde in slot 4, da es beginnen würde, bei slot 1 und halten Sie Sondieren nach vorne, bis es findet einen leeren slot. Es würde nicht aufhören, auf Steckplatz 2, obwohl es das ist, was ich will, weil es nicht leer ist.

Ich bin mit diesen zu kämpfen, selbst wenn ich getrennte Verkettung. Alle 3 Tasten gespeichert werden würde auf slot 1, aber mit dem gleichen Algorithmus zur Suche zurückkehren würde, slot 1, nicht die Knoten in der verketteten Liste.

InformationsquelleAutor TreeTree | 2012-10-22

Schreibe einen Kommentar