Διαφορά μεταξύ BST, Κατακερματισμός, Προσπάθειες και χάρτης

ψήφοι
4

Διάβασα κάποια blog και tutorial για Προσπαθεί, κατακερματισμού, Χάρτης (STL) και BST. Είμαι πολύ μπερδεμένος με την οποία το ένα είναι καλύτερο να χρησιμοποιήσετε και πού. Ξέρω ότι για να κάνει τέτοια διαφορά μεταξύ τους είναι ανοησίες, επειδή είναι όλα εξαρτάται από την υλοποίηση. Θα σας παρακαλώ να μου πείτε πιο συγκεκριμένα και σας παρακαλώ να μην ξεχάσει να αναφέρω την πολυπλοκότητα (χειρότερο, avg, και καλύτερη περίπτωση).

Ευχαριστώ εκ των προτέρων...

Δημοσιεύθηκε 16/08/2011 στις 10:07
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
6

BST είναι Binary Search Tree. Χρησιμοποιείται για ένα λεξικό. BST δεν έχει περιορισμούς στη δομή, και έτσι μια αναζήτηση / εισαγωγής / διαγραφής είναι O (n) χειρότερη περίπτωση.

Χάρτης [για STL] είναι επίσης ένα λεξικό, και είναι στην πραγματικότητα ένα κόκκινο-μαύρο δέντρο [στο STL]. είναι ένα ιδιαίτερο είδος της BST, ο οποίος έχει περιορισμούς σχετικά με τις δομές, λόγω του ότι, το χειρότερο αναζήτηση υπόθεση / εισαγωγή / διαγραφή είναι O (logn).

hashing πίνακα hash είναι ένας διαφορετικός τύπος λεξικού, το πλεονέκτημα ενός πίνακα hash [με καλές λειτουργίες hash] είναι Ο (1) μέσος χρόνος για την αναζήτηση / διαγραφή / ένθετο. Ωστόσο, η χειρότερη περίπτωση είναι O (n), η οποία συμβαίνει εάν πάρα πολύ στοιχεία συγκρούονται και / ή όταν απαιτείται μια επανάληψη [όταν Load Balance είναι πάρα πολύ υψηλή, διαθέτουμε ένα μεγαλύτερο συστοιχία, και αναμάσημα όλα τα στοιχεία να είναι].

Προσπαθεί είναι ειδικά για έγχορδα. Όλες οι ops είναι O (S) όπου το S είναι το μήκος της στοιχειοσειράς. Είναι πλεονέκτημα για τους άλλους [όταν ασχολείται με χορδές] είναι θα πρέπει να διαβάσετε το string ούτως ή άλλως, οπότε η πολυπλοκότητα εάν ένας Mapγια παράδειγμα, όταν ασχολείται με χορδές, είναι στην πραγματικότητα O (S * ν * logn).

πότε πρέπει να χρησιμοποιήσω;
ένα Map[ή οποιοδήποτε άλλο ισορροπημένο δέντρο], θα πρέπει σχεδόν πάντα να είναι μια καλύτερη επιλογή στη συνέχεια μια τακτική BST.
hash tableείναι μια καλή επιλογή όταν θέλετε μέση σύντομο χρονικό διάστημα, αλλά δεν με νοιάζει ότι μερικές φορές θα έχετε απώλεια απόδοσης εξαιτίας αναμάσημα, και σε ορισμένες περιπτώσεις μπορεί να συμβούν συγκρούσεις.
Trieείναι συνήθως ένα καλό λεξικό για έγχορδα.

Απαντήθηκε 17/08/2011 στις 08:54
πηγή χρήστη

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