Junior — Middle
Wyjaśnij zasadę otwartego adresowania w implementacji kontenerów asocjacyjnych typu map.
sobes.tech AI
Odpowiedź od AI
Otwarte adresowanie to metoda rozwiązywania kolizji w tablicach haszujących, takich jak map. Przy dodawaniu pary klucz-wartość, jeśli obliczony hash wskazuje na zajętą komórkę, poszukiwanie wolnej komórki odbywa się w obrębie tablicy według określonej sekwencji (np. liniowe lub kwadratowe próbkowanie).
Zamiast używać list powiązanych do kolizji (łańcuchów), otwarte adresowanie przechowuje wszystkie elementy w jednym tablicy, kolejno sprawdzając sąsiednie pozycje, aż znajdzie się pusta.
Przykład liniowego próbkowania:
// hash - funkcja haszująca
// table - tablica do przechowywania elementów
// i - numer próby
index := (hash(klucz) + i) % len(table)
Takie podejście oszczędza pamięć na wskaźnikach, ale wymaga kontroli obciążenia tablicy, aby uniknąć pogorszenia wydajności.