Junior — Middle
Můžeš uvést příklady způsobů řešení kolizí při práci s hash tabulkami?
sobes.tech AI
Odpověď od AI
Při práci s hashtabulkami dochází ke kolizím, když různé klíče jsou hashovány do stejné buňky. Hlavní způsoby řešení kolizí:
-
Metoda řetězení (chaining) — v každé buňce hashtabulky je uložena spojovaná seznam prvků, které do této buňky spadly. Při kolizi je nový prvek přidán do seznamu.
-
Otevřené adresování (open addressing) — při kolizi se podle určitého pravidla (lineární sondování, kvadratické sondování, dvojité hashování) hledá následující volná buňka.
Příklad metody řetězení:
class HashTable {
var buckets: [[(key: String, value: Int)]]
init(size: Int) {
buckets = Array(repeating: [], count: size)
}
func hash(_ key: String) -> Int {
return abs(key.hashValue) % buckets.count
}
func insert(key: String, value: Int) {
let index = hash(key)
buckets[index].append((key, value))
}
}
Volba metody závisí na požadavcích na výkon a paměť.