Sobes.tech
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 такрор ба такрор ҳисоб карда мешавад.