Middle+
Atnaujinus maišą, ar jis lieka tas pats ar skaičiuojamas naujas raktui?
sobes.tech AI
Atsakymas iš AI
Duomenų struktūrose, tokiose kaip žemės maišos lentelės, kiekvienam raktui skaičiuojamas naujas maišas. Tai susiję su tuo, kad lentelės dydis keičiasi, ir norint teisingai paskirstyti elementus į naujus kibirus, būtina peržiūrėti maišą, atsižvelgiant į naują dydį.
Kitaip tariant, senas maišas nėra išsaugotas, o kiekvienam raktui funkcija maišui yra iš naujo iškviečiama, ir rezultatas naudojamas norint nustatyti naują poziciją išplėstame lentelėje.
Pavyzdys Go kalba:
// Kai didėja lentelės dydis, kviečiamas 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)
}
}
}
Taigi, rakto maišas yra iš naujo apskaičiuojamas rehash metu.