Junior — Middle
Hash-таблицалар менен иштөөдө кагылышууларды жоюунун мисалдарын келтире аласызбы?
sobes.tech AI
AIден жооп
Хеш таблицалар менен иштөөдө, ар кандай ачкычтар бир эле клеткага хештелгенде, кагылышуулар (collision) пайда болот. Кагылышууларды чечүүнүн негизги жолдору:
-
Занжирлөө ыкмасы (chaining) — ар бир хеш таблица клеткасында, ага түшкөн элементтердин байланып турган тизмеси сакталат. Кагылышуу болгондо, жаңы элемент тизмеге кошулат.
-
Ачык дарек (open addressing) — кагылышуу учурда, белгиленген эрежеге ылайык (линейдүү издөө, квадратик издөө, экилик хештөө) кийинки бош клетка издөө.
Занжирлөө ыкмасының мисалы:
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))
}
}
Мындан улам, ыкманы тандоо иштөө ылдамдыгы жана эс тутум талаптарына көз каранды.