Αλγόριθμοι Ταξινόμησης – Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές Προγραμματισμού 1
Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού 2
Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού 3
Ένα Κάτω Φράγμα για τους Αλγόριθμους Ταξινόμησης Δομές Δεδομένων και Τεχνικές Προγραμματισμού 4
Δέντρα Αποφάσεων Δομές Δεδομένων και Τεχνικές Προγραμματισμού 5
Δέντρα Αποφάσεων Δομές Δεδομένων και Τεχνικές Προγραμματισμού 6
Παράδειγμα Δέντρου Αποφάσεων Δομές Δεδομένων και Τεχνικές Προγραμματισμού 7 a < b a < c b < c a < c b < c a, b, c a, c, b c, a, b b, a, cb, c, a c, b, a yes no yes no
Δέντρα Αποφάσεων Δομές Δεδομένων και Τεχνικές Προγραμματισμού 8
Πρόταση Δομές Δεδομένων και Τεχνικές Προγραμματισμού 9
10
Παράδειγμα Δομές Δεδομένων και Τεχνικές Προγραμματισμού 11
Απόδειξη του Κάτω Φράγματος Δομές Δεδομένων και Τεχνικές Προγραμματισμού 12
Απόδειξη του Κάτω Φράγματος Δομές Δεδομένων και Τεχνικές Προγραμματισμού 13
Ταξινόμηση σε Γραμμικό Χρόνο Δομές δεδομένων και Τεχνικές Προγραμματισμού 14
Ταξινόμηση σε Γραμμικό Χρόνο Υπάρχουν αλγόριθμοι ταξινόμησης που τρέχουν σε γραμμικό χρόνο αλλά είναι κατάλληλοι μόνο για πίνακες με συγκεκριμένους τύπους στοιχείων. Θα παρουσιάσουμε τους αλγόριθμους bucket-sort και radix-sort. Δομές δεδομένων και Τεχνικές Προγραμματισμού 15
Ο Αλγόριθμος bucket-sort Δομές δεδομένων και Τεχνικές Προγραμματισμού 16
Ο Αλγόριθμος bucket-sort Δομές δεδομένων και Τεχνικές Προγραμματισμού 17
Ο Αλγόριθμος bucket-sort Μια σημαντική ιδιότητα του αλγόριθμου bucket-sort είναι ότι λειτουργεί σωστά ακόμα και αν υπάρχουν πολλά στοιχεία με την ίδια τιμή κλειδιού. Δομές Δεδομένων και Τεχνικές Προγραμματισμού 18
Ευσταθείς Μέθοδοι Ταξινόμησης Δομές δεδομένων και Τεχνικές Προγραμματισμού 19
Παράδειγμα Θεωρήστε τις παρακάτω εγγραφές που περιέχουν επώνυμα φοιτητών και έτος φοίτησης στο πανεπιστήμιο. Υποθέστε ότι αρχικά ταξινομούνται ως προς το επώνυμο: Δομές δεδομένων και Τεχνικές Προγραμματισμού 20 ΕπώνυμοΈτος φοίτησης Adams1 Black2 Brown4 Jackson2 Jones4 Smith1 Thompson4 Washington2 White3 Wilson3
Παράδειγμα Μια ασταθής ταξινόμηση ως προς το έτος φοίτησης είναι η παρακάτω: Δομές δεδομένων και Τεχνικές Προγραμματισμού 21 ΕπώνυμοΈτος φοίτησης Adams1 Smith1 Washington2 Jackson2 Black2 White3 Wilson3 Thompson4 Brown4 Jones4
Παράδειγμα Μια ευσταθής ταξινόμηση ως προς το έτος φοίτησης είναι η παρακάτω: Δομές δεδομένων και Τεχνικές Προγραμματισμού 22 ΕπώνυμοΈτος φοίτησης Adams1 Smith1 Black2 Jackson2 Washington2 White3 Wilson3 Brown4 Jones4 Thompson4
Ερωτήσεις Ποιοι από τους αλγόριθμους ταξινόμησης που έχουμε παρουσιάσει είναι ευσταθείς; Είναι ο αλγόριθμος bucket-sort ευσταθής; Δομές δεδομένων και Τεχνικές Προγραμματισμού 23
Bucket-sort Δομές δεδομένων και Τεχνικές Προγραμματισμού 24
Λεξικογραφική Διάταξη Δομές δεδομένων και Τεχνικές Προγραμματισμού 25
Ο Αλγόριθμος Ταξινόμησης Βάσης Δομές δεδομένων και Τεχνικές Προγραμματισμού 26
Παράδειγμα Δομές δεδομένων και Τεχνικές Προγραμματισμού 27
Παράδειγμα Δομές δεδομένων και Τεχνικές Προγραμματισμού 28
Ο Αλγόριθμος Ταξινόμησης Βάσης Δομές δεδομένων και Τεχνικές Προγραμματισμού 29
Αλγόριθμοι Ταξινόμησης: Σύνοψη Αν θέλουμε να ταξινομήσουμε μικρούς πίνακες (π.χ., με 100 στοιχεία) οι στοιχειώδεις αλγόριθμοι που παρουσιάσαμε είναι κατάλληλοι. Αν ο δοσμένος πίνακας είναι σχεδόν ταξινομημένος, η ταξινόμηση με εισαγωγή είναι η προτιμητέα. Αν τα στοιχεία του πίνακα είναι μεγάλα και η αντιμετάθεση τους κοστίζει, τότε η ταξινόμηση με επιλογή είναι η κατάλληλη. Δομές δεδομένων και Τεχνικές Προγραμματισμού 30
Αλγόριθμοι Ταξινόμησης: Σύνοψη Ο αλγόριθμος ταξινόμησης με συγχώνευση είναι κατάλληλος για περιπτώσεις που τα δεδομένα μας δεν χωράνε στην κύρια μνήμη και είναι αποθηκευμένα στο δίσκο. Για δεδομένα που χωράνε στην κύρια μνήμη, ο αλγόριθμοι quicksort και heapsort είναι προτιμότεροι του mergesort επειδή ταξινομούν τα δεδομένα επιτόπου. Μεταξύ των quicksort και heapsort, πειραματικές μελέτες έχουν δείξει ότι υπερτερεί ο quicksort τις περισσότερες φορές. Οπότε ο quicksort είναι ένας εξαιρετικός αλγόριθμος γενικής χρήσης για δεδομένα που βρίσκονται στην κύρια μνήμη. Γι αυτό χρησιμοποιείται από την συνάρτηση βιβλιοθήκης qsort της C. Δομές δεδομένων και Τεχνικές Προγραμματισμού 31
Αλγόριθμοι Ταξινόμησης: Σύνοψη Δομές δεδομένων και Τεχνικές Προγραμματισμού 32
Αλγόριθμοι Ταξινόμησης: Σύνοψη Δομές δεδομένων και Τεχνικές Προγραμματισμού 33
Μελέτη M.T. Goodrich, R. Tamassia and D. Mount. Data Structures and Algorithms in C++. 2 nd edition, – Sections , and M.T. Goodrich, R. Tamassia. Δομές Δεδομένων και Αλγόριθμοι σε Java. 5 η έκδοση. Εκδόσεις Δίαυλος. – Κεφ , και Δομές δεδομένων και Τεχνικές Προγραμματισμού 34