Πλεονεκτήματα της δυαδικής αναζήτησης δέντρα πάνω πίνακες Hash

ψήφοι
81

Ποια είναι τα πλεονεκτήματα των δυαδικών δέντρων αναζήτησης πάνω πίνακες κατακερματισμού;

Hash πίνακες να αναζητήσετε οποιοδήποτε στοιχείο στο Θήτα (1) χρόνο και είναι εξίσου εύκολο να προσθέσετε ένα στοιχείο .... αλλά δεν είμαι σίγουρος για τα πλεονεκτήματα πηγαίνει ο άλλος τρόπος γύρω.

Δημοσιεύθηκε 08/11/2010 στις 23:06
πηγή χρήστη
Σε άλλες γλώσσες...                            


20 απαντήσεις

ψήφοι
70

Ένα «πλεονέκτημα» ενός δυαδικού δένδρου είναι ότι μπορεί να μετατοπίζεται στη λίστα από όλα τα στοιχεία με τη σειρά. Αυτό δεν είναι αδύνατο με ένα πίνακα κατακερματισμού, αλλά δεν είναι μια φυσιολογική λειτουργία ενός σχεδιασμού σε μια δομή κατακερματισμένη.

Απαντήθηκε 08/11/2010 στις 23:11
πηγή χρήστη

ψήφοι
9

Μια hashtable θα καταλαμβάνουν περισσότερο χώρο, όταν δημιουργήθηκε για πρώτη φορά - θα έχει διαθέσιμες υποδοχές για τα στοιχεία που δεν έχουν ακόμη εισαχθεί (έστω και αν δεν έχουν εισαχθεί ποτέ), ένα δυαδικό δέντρο αναζήτησης θα είναι μόνο τόσο μεγάλο όσο χρειάζεται για να είναι. Επίσης, όταν ένα hash-table χρειάζεται περισσότερο χώρο, επεκτείνεται σε μια άλλη δομή θα μπορούσε να είναι χρονοβόρα, αλλά αυτό μπορεί να εξαρτάται από την εφαρμογή.

Απαντήθηκε 08/11/2010 στις 23:11
πηγή χρήστη

ψήφοι
76

Να θυμάστε ότι η δυαδική αναζήτηση Δέντρα (αναφορά-based) είναι μνήμη αποδοτική. Δεν διατηρεί περισσότερη μνήμη από ό, τι χρειάζεται.

Για παράδειγμα, εάν μια συνάρτηση κατακερματισμού έχει μια σειρά R(h) = 0...100, τότε θα πρέπει να διαθέσει μια διάταξη στοιχείων 100 (δείκτες-να), ακόμα κι αν είναι μόνο hashing 20 στοιχεία. Αν ήταν να χρησιμοποιήσετε ένα δυαδικό δέντρο αναζήτησης για να αποθηκεύσετε τις ίδιες πληροφορίες, θα διαθέσει μόνο όσο χώρο που απαιτείται, καθώς και κάποια μεταδεδομένα για τις συνδέσεις.

Απαντήθηκε 08/11/2010 στις 23:11
πηγή χρήστη

ψήφοι
6

Ένα δυαδικό δέντρο είναι πιο αργή για να αναζητήσετε και να εισαγάγει, αλλά έχει το πολύ καλό χαρακτηριστικό γνώρισμα της διάσχισης InFix το οποίο ουσιαστικά σημαίνει ότι μπορείτε να μετακινηθείτε μέσα από τους κόμβους του δέντρου σε μια ταξινομημένη σειρά.

Την επανάληψη μέσα από τις εγγραφές ενός πίνακα κατακερματισμού απλά δεν κάνει πολύ νόημα, γιατί είναι όλα διάσπαρτα στη μνήμη.

Απαντήθηκε 08/11/2010 στις 23:13
πηγή χρήστη

ψήφοι
8

Ένα δυαδικό δένδρο αναζήτησης μπορεί να υλοποιηθεί με ένα επίμονο interface, όπου ένα νέο δέντρο επιστρέφεται, αλλά το παλιό δέντρο συνεχίζει να υφίσταται. Εφαρμοστεί προσεκτικά, οι μετοχές παλαιά και νέα δέντρα πιο κόμβων τους. Δεν μπορείτε να το κάνετε αυτό με ένα πρότυπο πίνακα κατακερματισμού.

Απαντήθηκε 08/11/2010 στις 23:19
πηγή χρήστη

ψήφοι
23

Τα κύρια πλεονεκτήματα ενός δυαδικού δέντρου πάνω από ένα πίνακα κατακερματισμού είναι ότι το δυαδικό δέντρο σας δίνει δύο επιπλέον λειτουργίες δεν μπορείτε να κάνετε (εύκολα, γρήγορα) με ένα πίνακα κατακερματισμού

  • βρείτε το στοιχείο που βρίσκεται πλησιέστερα προς (όχι απαραίτητα ίσο με) κάποια αυθαίρετη τιμή του κλειδιού (ή πιο κοντινό πάνω / κάτω)

  • iterate μέσω των περιεχομένων του δέντρου σε ταξινομημένη σειρά

Οι δύο συνδέονται - το δυαδικό δέντρο κρατά το περιεχόμενό του σε μια ταξινομημένη σειρά, έτσι τα πράγματα που απαιτούν ταξινομημένη σειρά είναι εύκολο να το κάνουμε.

Απαντήθηκε 08/11/2010 στις 23:25
πηγή χρήστη

ψήφοι
14

Α (ισορροπημένη) δυαδικό δένδρο αναζήτησης έχει επίσης το πλεονέκτημα ότι ασυμπτωτική πολυπλοκότητα του είναι στην πραγματικότητα ένα άνω όριο, ενώ οι «σταθερές» φορές για πίνακες κατακερματισμού είναι αναπόσβεστο φορές: Εάν έχετε ένα ακατάλληλο συνάρτηση κατακερματισμού, θα μπορούσατε να καταλήξετε εξευτελιστική για γραμμικό χρόνο και όχι σταθερή.

Απαντήθηκε 08/11/2010 στις 23:29
πηγή χρήστη

ψήφοι
1

Αν θέλετε να αποκτήσετε πρόσβαση στα δεδομένα σε ένα ταξινομημένο τρόπο, τότε μια ταξινομημένη λίστα πρέπει να διατηρηθεί παράλληλα με τον πίνακα κατακερματισμού. Ένα καλό παράδειγμα είναι Λεξικό σε .Net. (βλέπε http://msdn.microsoft.com/en-us/library/3fcwy8h6.aspx ).

Αυτό έχει το παρενέργεια της όχι μόνο επιβράδυνση ένθετα, αλλά καταναλώνει ένα μεγαλύτερο ποσό της μνήμης από ένα β-δέντρο.

Επιπλέον, δεδομένου ότι η β-δέντρο είναι ταξινομημένο, είναι απλό να βρει σειρές των αποτελεσμάτων, ή να εκτελέσει συνδικάτα ή συγχωνεύσεις.

Απαντήθηκε 08/11/2010 στις 23:34
πηγή χρήστη

ψήφοι
48

Εκτός από όλα τα άλλα καλά σχόλια:

Hash πίνακες σε γενικές γραμμές έχουν καλύτερη συμπεριφορά της κρυφής μνήμης που απαιτούν λιγότερη μνήμη διαβάζει σε σύγκριση με ένα δυαδικό δέντρο. Για έναν πίνακα κατακερματισμού που συνήθως συνεπάγεται μία μόνο ανάγνωση, πριν να έχουν πρόσβαση σε μια αναφορά που κατέχουν τα δεδομένα σας. Το δυαδικό δέντρο, αν πρόκειται για μια ισορροπημένη παραλλαγή, απαιτεί κάτι με τη σειρά του k * lg (n) μνήμη διαβάζει για κάποια σταθερά k.

Από την άλλη πλευρά, αν ένας εχθρός γνωρίζει το συνάρτηση κατακερματισμού ο εχθρός μπορεί να επιβάλει πίνακα κατακερματισμού σας για να κάνετε τις συγκρούσεις, που παρεμποδίζουν σημαντικά την απόδοσή του. Η λύση είναι να επιλέξετε τη συνάρτηση κατακερματισμού τυχαία από μια οικογένεια, αλλά μια BST δεν έχει αυτό το μειονέκτημα. Επίσης, όταν η πίεση πίνακα κατακερματισμού μεγαλώνει πάρα πολύ, συχνά έχουν την τάση να enlargen και ανακατανομής του πίνακα κατακερματισμού που μπορεί να είναι μια ακριβή λειτουργία. Η BST έχει απλούστερη συμπεριφορά εδώ και δεν έχουν την τάση να διαθέσει ξαφνικά πολλά δεδομένα και να κάνει μια επιχείρηση αναμασά.

Δέντρα τείνουν να είναι ο τελικός μέσος δομή δεδομένων. Μπορούν να ενεργούν ως λίστες, μπορεί εύκολα να χωριστεί για την παράλληλη λειτουργία, έχουν γρήγορη απομάκρυνση, την εισαγωγή και την αναζήτηση της τάξεως των O (lg n) . Κάνουν τίποτα ιδιαίτερα καλά, αλλά δεν έχουν καμία υπερβολικά κακή συμπεριφορά, είτε.

Τέλος, BSTs είναι πολύ πιο εύκολο να εφαρμοστεί στην (καθαρή) λειτουργική γλώσσα σε σύγκριση με το hash-τραπέζια και δεν απαιτούν καταστροφική ενημερώσεις που πρέπει να εφαρμοστούν (η εμμονή επιχείρημα του Pascal παραπάνω).

Απαντήθηκε 09/11/2010 στις 01:01
πηγή χρήστη

ψήφοι
-1

Το κύριο πλεονέκτημά του πίνακα κατακερματισμού είναι ότι δεν κάνει σχεδόν όλα τα ops στο ~ = O (1). Και είναι πολύ εύκολο να κατανοήσουν και να εφαρμόσουν. Κάνει λύσει πολλά «προβλήματα συνέντευξη» αποτελεσματικά. Έτσι, αν και θέλουν να σπάσουμε ένα κωδικοποίηση συνέντευξη, κάνει καλύτεροι φίλοι με τον πίνακα κατακερματισμού ;-)

Απαντήθηκε 05/04/2011 στις 00:45
πηγή χρήστη

ψήφοι
4

BSTs παρέχουν επίσης το «findPredecessor» και επιχειρήσεις «findSuccessor» (Για να βρείτε τις αμέσως μικρότερο και το επόμενο μεγαλύτερο στοιχείων) σε O (logn) χρόνο, η οποία θα μπορούσε επίσης να είναι πολύ βολικό επιχειρήσεις. Hash Πίνακας δεν μπορεί να παράσχει σε αυτό το διάστημα αποδοτικότητα.

Απαντήθηκε 20/09/2012 στις 18:55
πηγή χρήστη

ψήφοι
1

Εξαρτάται επίσης από τη χρήση, Hash επιτρέπει να εντοπίσει την ακριβή αντιστοιχία. Αν θέλετε να υποβάλετε ερώτημα για μια σειρά τότε BST είναι η επιλογή. Ας υποθέσουμε ότι έχετε μια πολλά e1 δεδομένων, Ε2, Ε3 ..... en.

Με πίνακα κατακερματισμού μπορείτε να εντοπίσετε οποιοδήποτε στοιχείο σε συνεχή χρόνο.

Αν θέλετε να βρείτε τιμές εύρος μεγαλύτερο από Ε41 και λιγότερο από Ε8, BST να βρείτε γρήγορα αυτό.

Το βασικό πράγμα είναι η συνάρτηση κατακερματισμού που χρησιμοποιείται για να αποφευχθεί η σύγκρουση. Φυσικά, δεν μπορούμε να αποφύγουμε τελείως τη σύγκρουση, στην οποία περίπτωση θα καταφύγουν σε αλυσιδωτή σύνδεση ή άλλες μεθόδους. Το γεγονός αυτό καθιστά την ανάκτηση πλέον σταθερά χρόνου σε χειρότερες περιπτώσεις.

Μόλις πλήρης, πίνακας κατακερματισμού πρέπει να αυξηθεί το μέγεθος του κάδου και να αντιγράψετε όλα τα στοιχεία και πάλι. Αυτό είναι ένα επιπλέον κόστος δεν παρουσιάζουν πάνω BST.

Απαντήθηκε 29/01/2013 στις 15:54
πηγή χρήστη

ψήφοι
94

Ένα πλεονέκτημα που κανένας άλλος δεν έχει επισημάνει είναι ότι δυαδικό δένδρο αναζήτησης σας δίνει τη δυνατότητα να κάνετε αναζητήσεις φάσμα αποτελεσματικά.

Για να απεικονίσουν την ιδέα μου, θέλω να κάνω μια ακραία περίπτωση. Ας υποθέσουμε ότι θέλετε να πάρετε όλα τα στοιχεία των οποίων κλειδιά είναι μεταξύ 0 έως το 5000. Και στην πραγματικότητα υπάρχει μόνο ένα τέτοιο στοιχείο και 10000 άλλα στοιχεία των οποίων τα κλειδιά που δεν βρίσκονται στην περιοχή. BST μπορεί να κάνει αναζητήσεις φάσμα αρκετά αποτελεσματικά, δεδομένου ότι δεν κάνετε ένα υποδέντρο που είναι αδύνατο να έχει την απάντηση.

Ενώ, πώς μπορείτε να κάνετε αναζητήσεις σειρά σε ένα πίνακα κατακερματισμού; Θα πρέπει είτε να επαναλάβει κάθε χώρο κάδο, που είναι O (n), ή θα πρέπει να κοιτάξουμε για το αν κάθε μια από 1,2,3,4 ... έως και 5000 υπάρχει. (Τι γίνεται με τα πλήκτρα μεταξύ 0 και 5000 είναι ένα άπειρο σύνολο; για παράδειγμα τα κλειδιά μπορεί να δεκαδικά ψηφία)

Απαντήθηκε 11/11/2013 στις 01:05
πηγή χρήστη

ψήφοι
0

Ένας πίνακας κατακερματισμού είναι μια μη διατεταγμένη δομή δεδομένων, Κατά το σχεδιασμό ένα κινητό τηλέφωνο, που θέλετε να κρατήσετε, όπως το δυνατόν περισσότερα δεδομένα διαθέσιμα για αποθήκευση δεδομένων. Ένας πίνακας κατακερματισμού είναι μια μη διατεταγμένη δομή δεδομένων - πράγμα που σημαίνει ότι δεν τηρεί τα στοιχεία του σε κάποια συγκεκριμένη σειρά. Έτσι, αν χρησιμοποιείτε ένα πίνακα κατακερματισμού για ένα βιβλίο διευθύνσεων κινητό τηλέφωνο, τότε θα χρειαστεί επιπλέον μνήμη για να ταξινομήσετε τις τιμές γιατί θα πρέπει σίγουρα να εμφανίσετε τις τιμές σε αλφαβητική σειρά - είναι ένα βιβλίο διευθύνσεων μετά από όλα. Έτσι, με τη χρήση ενός πίνακα hash θα πρέπει να αναιρέσει τη μνήμη για να ταξινομήσετε τα στοιχεία τα οποία θα μπορούσαν να χρησιμοποιηθούν ως αποθηκευτικός χώρος. Αλλά δυαδικό δέντρο αναζήτησης είναι μια ταξινομημένη δεδομένων structure.Because ένα δυαδικό δέντρο αναζήτησης έχει ήδη διευθετηθεί, δεν θα υπάρχει ανάγκη να χάνουμε τη μνήμη ή το χρόνο επεξεργασίας διαλογής αρχεία σε ένα κινητό τηλέφωνο. Όπως αναφέραμε νωρίτερα, κάνει μια αναζήτηση ή ένα ένθετο σε ένα δυαδικό δέντρο είναι πιο αργή από ό, τι το κάνει με ένα πίνακα κατακερματισμού, αλλά ένα κινητό τηλέφωνο βιβλίο διευθύνσεων σχεδόν ποτέ δεν θα έχουν πάνω από 5.000 συμμετοχές. Με ένα τόσο μικρό αριθμό των συμμετοχών, O ένα δυαδικό δέντρο αναζήτησης (log (n)) θα είναι σίγουρα αρκετά γρήγορα. Έτσι, δίνονται όλες οι πληροφορίες, ένα δυαδικό δέντρο αναζήτησης είναι η δομή των δεδομένων που θα πρέπει να χρησιμοποιήστε αυτό το σενάριο, δεδομένου ότι είναι μια καλύτερη επιλογή από ένα πίνακα κατακερματισμού.

Απαντήθηκε 26/12/2013 στις 17:40
πηγή χρήστη

ψήφοι
0

Πίνακας κατακερματισμού δεν είναι καλό για την ευρετηρίαση. Όταν ψάχνετε για ένα ευρύ φάσμα, BSTs είναι καλύτερα. Αυτός είναι ο λόγος για τον οποίο οι περισσότεροι δείκτες βάσης δεδομένων χρησιμοποιούν Β + δέντρα αντί για πίνακες Hash

Απαντήθηκε 05/04/2015 στις 17:34
πηγή χρήστη

ψήφοι
4

Από Σπάσιμο τη Συνέντευξη Κωδικοποίηση, 6η έκδοση

Μπορούμε να υλοποιήσει τον πίνακα hash με μια ισορροπημένη δυαδικό δέντρο αναζήτησης (BST). Αυτό μας δίνει μια O (log n) χρόνος αναζήτησης. Το πλεονέκτημα αυτού είναι δυνητικά χρησιμοποιώντας λιγότερο χώρο, αφού διαθέτουμε πλέον μια μεγάλη σειρά. Μπορούμε επίσης να επαναλάβει μέσα από τα κλειδιά για το οποίο μπορεί να είναι χρήσιμο μερικές φορές.

Απαντήθηκε 29/05/2016 στις 18:47
πηγή χρήστη

ψήφοι
-1

Οι κατηγορίες HashSet και πίνακα είναι μη ταξινομημένες συλλογές. Δεν είναι προφανές από το περιβάλλον (και θα μπορούσε να είναι αλλιώς), αλλά οι πίνακες κατακερματισμού υλοποιηθεί με τη χρήση AVL δέντρα. Αυτό σημαίνει ότι ο κώδικας κατακερματισμού δεν μειώνεται από την modulo μίας συστοιχίας (λιγότερο συγκρούσεις) και σημαίνει επίσης ότι δεν υπάρχει αναμασά μίας συστοιχίας που πρέπει να γίνουν (ομαλότερη απόδοση). Το γεγονός ότι είναι μη ταξινομημένες συλλογές σημαίνει ότι θα παρέχουν μόνο μια λειτουργία και μια λειτουργία hashCode ισούται με - όχι μια πλήρη comparer όπως και για τα δέντρα. Έτσι, αν χρησιμοποιείτε ένα πίνακα πίνακα κατακερματισμού <Κ, Τ> ή ένα δυαδικό δέντρο δέντρο <K, T> εξαρτάται από την κατηγορία K - αν είναι απολύτως συγκρίσιμα ή μόνο την ισότητα συγκρίσιμα.

Υπάρχουν περιπτώσεις όπου ο τύπος δεδομένων είναι τόσο συγκρίσιμα και της ισότητας συγκρίσιμο - όπως String. Αυτό σημαίνει ότι HashSet <String> και Σετ <String> είναι τόσο δυνατή. Ψάχνει για ένα σύνολο κατακερματισμού των χορδών έχουν την τάση να είναι περίπου 10 φορές πιο γρήγορα από ό, τι αναζητήσεις σε ένα διατεταγμένο σύνολο του χορδές. Αν ο συγκριτής είναι ακριβό τότε τα δέντρα να επιβραδύνει σε σύγκριση με hashtables. Αν ο συγκριτής είναι γρήγορο, (όπως για ακέραιους και άρματα), τότε τα δέντρα θα τρέξει πιο γρήγορα από τους πίνακες κατακερματισμού.

Απαντήθηκε 19/08/2017 στις 03:24
πηγή χρήστη

ψήφοι
0

Ένα HashMap είναι ένα σύνολο associative πίνακα. Έτσι, σειρά σας των τιμών των εισροών παίρνει συγκεντρώνονται σε κάδους. Σε μια ανοικτή αντιμετώπιση σύστημα, έχετε ένα δείκτη σε ένα κουβά, και κάθε φορά που προσθέτετε μια νέα τιμή σε έναν κάδο, μπορείτε να μάθετε πού στον κάδο υπάρχουν ελεύθερες θέσεις. Υπάρχουν μερικοί τρόποι για να το κάνετε αυτό-μπορείτε να ξεκινήσετε από την αρχή του κάδου και αυξάνει το δείκτη κάθε φορά και να δοκιμάσετε αν κατεχόμενα της. Αυτό ονομάζεται γραμμική σχολαστικά. Στη συνέχεια, μπορείτε να κάνετε μια δυαδική αναζήτησης όπως το πρόσθετο, όπου θα διπλασιάσει τη διαφορά μεταξύ της αρχής του κάδου και όπου μπορείτε να διπλασιάσετε ή πίσω κάθε φορά που ψάχνετε για έναν ελεύθερο χώρο. Αυτό ονομάζεται τετραγωνική σχολαστικά. ΕΝΤΑΞΕΙ. Τώρα, τα προβλήματα και στις δύο αυτές μεθόδους είναι ότι αν ο κάδος ξεχειλίζει μέσα στις επόμενες κάδους αντιμετώπιση, τότε θα πρέπει να έχετε to-

  1. Δίκλινο κάθε κουβάδες μεγέθους- malloc (Ν κουβάδες) / αλλάξετε το hash function- απαιτείται Ώρα: εξαρτάται από την εφαρμογή malloc
  2. Μεταφορά / Αντιγραφή κάθε ένα από τα προηγούμενα στοιχεία κουβάδες στα νέα δεδομένα κουβάδες. Αυτή είναι μια λειτουργία O (Ν) όπου το Ν αντιπροσωπεύει το σύνολο δεδομένων

ΕΝΤΑΞΕΙ. αλλά αν χρησιμοποιείτε μια LinkedList δεν θα πρέπει να υπάρχει ένα τέτοιο πρόβλημα σωστά; Ναι, σε συνδεδεμένες λίστες δεν έχετε αυτό το πρόβλημα. Λαμβάνοντας υπόψη σε κάθε κάδο για να αρχίσει με μια συνδεδεμένη λίστα, και αν έχετε 100 στοιχεία σε έναν κάδο απαιτεί από εσάς να διασχίσει αυτά τα 100 στοιχεία που να φθάσει στο τέλος του LinkedList εξ ου και η List.add (στοιχείο Ε) θα πάρει χρόνο to-

  1. Hash το στοιχείο σε μια Κάδος κανονική όπως και σε όλες τις εφαρμογές
  2. Πάρτε το χρόνο για να βρει το τελευταίο στοιχείο στην εν λόγω Κάδος O λειτουργίας (Ν).

Το πλεονέκτημα της εφαρμογής LinkedList είναι ότι δεν χρειάζεστε τη λειτουργία κατανομής της μνήμης και O (N) μεταφορά / αντιγραφή όλων των κάδων, όπως στην περίπτωση της ανοικτής εφαρμογής αντιμετώπιση.

Έτσι, ο τρόπος για να ελαχιστοποιηθεί η λειτουργία O (N) είναι να μετατρέψει την εφαρμογή σε αυτό ενός Binary Search Tree όπου βρείτε επιχειρήσεις είναι O (log (N)) και μπορείτε να προσθέσετε το στοιχείο στη θέση του με βάση αυτό είναι αξία. Το πρόσθετο χαρακτηριστικό της BST είναι ότι έρχεται ταξινομημένο!

Απαντήθηκε 20/08/2017 στις 23:24
πηγή χρήστη

ψήφοι
0

Δυαδικά δέντρα αναζήτησης είναι καλή επιλογή για την υλοποίηση λεξικό αν τα πλήκτρα έχουν κάποια συνολική παραγγελία (πλήκτρα είναι συγκρίσιμα) ορίζονται σε αυτά και θέλετε να διατηρήσετε τις πληροφορίες παραγγελίας.

Όπως BST διατηρεί τις πληροφορίες παραγγελίας, θα σας παρέχει με τέσσερις πρόσθετες λειτουργίες δυναμικό σύνολο που δεν μπορεί να εκτελεστεί (αποτελεσματικά) με τη χρήση πινάκων κατακερματισμού. Οι ενέργειες αυτές είναι οι εξής:

  1. Το μέγιστο
  2. Ελάχιστο
  3. Διάδοχος
  4. Προκάτοχος

Όλες αυτές οι εργασίες όπως κάθε λειτουργία BST έχουν χρονική πολυπλοκότητα O (H). Επιπλέον, όλα τα αποθηκευμένα κλειδιά παραμένουν ταξινομημένα με την BST έτσι ώστε να μπορείτε να πάρετε το ταξινομημένη ακολουθία των πλήκτρων απλά διέρχονται από το δέντρο στο παραγγελία.

Εν ολίγοις, αν το μόνο που θέλετε είναι πράξεις εισάγετε, να διαγράψετε και να αφαιρέσετε έπειτα hash πίνακας είναι ανίκητη (τις περισσότερες φορές) σε απόδοση. Αλλά αν θέλετε οποιαδήποτε ή όλες τις λειτουργίες που αναφέρονται παραπάνω θα πρέπει να χρησιμοποιήσετε ένα BST, κατά προτίμηση μια αυτο-εξισορρόπησης BST.

Απαντήθηκε 19/05/2018 στις 16:46
πηγή χρήστη

ψήφοι
0

Δυαδικά δέντρα αναζήτησης μπορεί να είναι ταχύτερη όταν χρησιμοποιείται με τα πλήκτρα κορδόνι. Ειδικά όταν χορδές είναι μεγάλες.

Δυαδικά δέντρα αναζήτησης, χρησιμοποιώντας συγκρίσεις για λιγότερο / περισσότερο οποίων είναι γρήγορα για έγχορδα (όταν δεν είναι ίσες). Έτσι, μια BST μπορεί να απαντήσει γρήγορα, όταν μια σειρά δεν έχει βρεθεί. Όταν βρήκε ότι θα πρέπει να κάνει μόνο ένα πλήρες σύγκρισης.

Σε ένα πίνακα κατακερματισμού. Θα πρέπει να υπολογίσει το hash της σειράς και αυτό σημαίνει ότι θα πρέπει να περάσουν από όλα τα bytes τουλάχιστον μία φορά για τον υπολογισμό του hash. Από την άλλη, όταν μια αντίστοιχη καταχώρηση βρεθεί.

Απαντήθηκε 13/10/2018 στις 11:32
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more