Junior — Middle
Hash jadvallar bilan ishlashda to'qnashuvlarni hal qilish usullarining misollarini keltira olasizmi?
sobes.tech AI
AIdan javob
Hash jadval bilan ishlashda, turli kalitlar bir xil hujayraga hashlanganida, to'qnashuvlar (kollisionlar) yuzaga keladi. To'qnashuvlarni hal qilishning asosiy usullari:
-
Zanjir usuli (chaining) — har bir hash jadvali hujayrasida, unga tushgan elementlarning bog'langan ro'yxati saqlanadi. To'qnashuv yuzaga kelganda, yangi element ro'yxatga qo'shiladi.
-
Ochiq manzilga joylash (open addressing) — to'qnashuvda, belgilangan qoidaga muvofiq (to'g'ri chiziqli qidirish, kvadrat qidirish, juft hash) keyingi bo'sh hujayra qidiriladi.
Zanjir usulining misoli:
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))
}
}
Shunday qilib, usul tanlovi ishlash tezligi va xotira talablariga bog'liq.