Middle+
Κατά την επανα-κατακερματισμό, το κατακερματισμό παραμένει ίδιο ή υπολογίζεται ένας νέος για το κλειδί;
sobes.tech AI
Απάντηση από AI
Κατά το rehashing σε δομές δεδομένων όπως οι πίνακες κατακερματισμού, υπολογίζεται ένα νέο hash για κάθε κλειδί. Αυτό συμβαίνει επειδή το μέγεθος του πίνακα αλλάζει και, για να διανεμηθούν σωστά τα στοιχεία στους νέους κάδους, είναι απαραίτητο να επαναυπολογιστεί το hash λαμβάνοντας υπόψη το νέο μέγεθος.
Με άλλα λόγια, το παλιό hash δεν διατηρείται, αλλά για κάθε κλειδί καλείται ξανά η συνάρτηση hash και το αποτέλεσμα χρησιμοποιείται για τον καθορισμό της νέας θέσης στον επεκταμένο πίνακα.
Παράδειγμα σε 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)
}
}
}
Έτσι, το hash για το κλειδί επαναυπολογίζεται κατά τη διάρκεια του rehashing.