Middle+
Ҳангоми барқарор кардани ҳеш, оё ҳеш мемонад ё барои калид ҳеши нав ҳисоб карда мешавад?
sobes.tech AI
Ҷавоб аз AI
Ҳангоми ҳисоб кардани дубора (rehashing) дар структураҳои додаҳо, монанди ҷадвалҳои ҳеш, барои ҳар як калид ҳошия нав ҳисоб карда мешавад. Ин бо сабаби он аст, ки андозаи ҷадвал тағйир меёбад ва барои тақсим кардани дуруст элементҳо ба косаҳои нав, зарур аст, ки ҳошия бо дарназардошти андозаи нав ҳисоб карда шавад.
Яъне, ҳошияи кӯҳна нигоҳ дошта намешавад, балки барои ҳар як калид функсияи ҳеш такрор ба такрор даъват мешавад ва натиҷа барои муайян кардани ҷойгоҳи нав дар ҷадвали васеъшуда истифода мешавад.
Масалан дар Go:
// Вақте ки андозаи ҷадвал зиёд мешавад, rehash даъват мешавад
func (ht *HashTable) rehash() {
oldBuckets := ht.buckets
ht.buckets = make([][]Entry, newSize)
for _, bucket := range oldBuckets {
for _, entry := range bucket {
newIndex := hash(entry.key) % newSize
ht.buckets[newIndex] = append(ht.buckets[newIndex], entry)
}
}
}
Аз ин рӯ, ҳошияи калид дар вақти rehashing такрор ба такрор ҳисоб карда мешавад.