Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 7 η Βασίλης Στεφανής
Αλγόριθμοι ταξινόμησης Στην προηγούμενη διάλεξη είδαμε: Binary search Λειτουργεί μόνο σε ταξινομημένους πίνακες Πώς τους ταξινομούμε? Πολλοί τρόποι. Ενδεικτικά: Ταξινόμηση με εισαγωγή (insertion sort) Ταξινόμηση φυσαλίδας (bubble sort) Γρήγορη ταξινόμηση (quick sort) Ταξινόμηση με συγχώνευση (Merge sort)
Insertion sort Ταξινόμηση με εισαγωγή Είναι ο τρόπος με τον όποιο θα ταξινομούσαμε και εμείς τα χαρτιά μιας τράπουλας Είναι απλός και υλοποιείται γρήγορα Δε χρειάζεται extra χώρο στη μνήμη για την ταξινόμηση Λειτουργεί πολύ καλά, αν τα στοιχεία είναι σχεδόν ταξινομημένα
Insertion sort Τρόπος λειτουργίας Βάζω το πρώτο στοιχείο από τον πίνακα εισόδου ως πρώτο στοιχείο στον πίνακα εξόδου Διαβάζω ένα προς ένα τα στοιχεία από τον πίνακα εισόδου και τα τοποθετώ στη σωστή θέση στον πίνακα εξόδου, με διαδοχικές συγκρίσεις από το μεγαλύτερο στο μικρότερο στοιχείο. Όταν βρεθεί η σωστή θέση του κάθε στοιχείου, μετακινώ προς τα δεξιά τα μεγαλύτερα στοιχεία Ο αλγόριθμος τερματίζει όταν έχουν διαβαστεί όλα τα στοιχεία από τον πίνακα εισόδου
Insertion sort - Άσκηση Να ταξινομηθεί με τον αλγόριθμο insertion sort ο πίνακας Α = [3, 7, 4, 9, 5, 2, 6, 1]. Για κάθε βήμα να γράψετε τον προσωρινό πίνακα εξόδου που δημιουργείται καθώς και τον αριθμό των συγκρίσεων που απαιτούνται.
Bubble sort Ταξινόμηση φυσαλίδας To όνομά του προέρχεται από τον τρόπο που λειτουργεί Οι μεγάλοι αριθμοί προς το τέλος της λίστας, σαν φυσαλίδες σε υγρό. Έχει μέτρια απόδοση Μεγάλος αριθμός συγκρίσεων Μεγάλος αριθμός αναγνώσεων εγγραφών Η κύρια χρήση του είναι εκπαιδευτική
Bubble Sort Τρόπος λειτουργίας Ξεκινώντας από την αρχή της λίστας, συγκρίνουμε κάθε γειτονικό ζεύγος. Αλλάζουμε τις τιμές αν δεν είναι στην σωστή σειρά. Σε κάθε επανάληψη του αλγόριθμου μια λιγότερη τιμή χρειάζεται να ελεγχθεί. Ο αλγόριθμος τερματίζει όταν δεν υπάρχουν άλλα αντικείμενα να συγκριθούν και να γίνουν εναλλαγές.
Bubble Sort - Άσκηση Να ταξινομηθεί με τον αλγόριθμο bubble sort ο πίνακας Α = [3, 7, 4, 9, 5, 2, 6, 1]. Για κάθε βήμα να γράψετε τον προσωρινό πίνακα εξόδου καθώς και τον αριθμό των συγκρίσεων που απαιτούνται.
Quick Sort Γρήγορη ταξινόμηση Κατατάσσεται στην κατηγορία του «Διαίρει και βασίλευε» Είναι όντως αρκετά γρήγορος Δεν έχει μόνο το όνομα Υπάρχει ενσωματωμένος σε: Unix/ Linix C, C++ Java
Quick Sort Τρόπος λειτουργίας Aν ο πίνακας έχει 0 ή 1 στοιχεία δεν κάνουμε τίποτα (είναι ήδη ταξινομημένος) Διαφορετικά, αναδρομικά εκτελούμε: Επιλέγουμε ένα στοιχείο p (το οποίο ονομάζουμε pivot - άξονα) και το αφαιρούμε από την πίνακα/λίστα εισόδου. Χωρίζουμε τον πίνακα/λίστα σε 2 μέρη: S1 και S2, όπου το S1 θα περιέχει όλα τα στοιχεία που είναι μικρότερα από το p και το S2 όπου περιέχονται όλα τα υπόλοιπα στοιχεία τα οποία είναι μεγαλύτερα ή ίσα με p. Καλούμε τον αλγόριθμο αναδρομικά στο S1, παίρνουμε απάντηση στο T1 και στο S2 και παίρνουμε απάντηση στο T2. Επιστρέφουμε τον πίνακα [T1, p, T2] Με πιο απλά λόγια: http://www.youtube.com/watch?v=3san3ukkhgg
Quick Sort - Άσκηση Να ταξινομηθεί με τον αλγόριθμο quick sort ο πίνακας Α = [5, 7, 4, 9, 3, 2, 6, 1]. Να φανούν αναλυτικά όλα τα βήματα του αλγορίθμου.
Merge Sort Ταξινόμηση με συγχώνευση Γρηγορότερος από τους άλλους 3 που παρουσιάσαμε Stable sort Διαίρει και βασίλευε Εφευρέτης John von Neumann http://en.wikipedia.org/wiki/john_von_neumann
Merge Sort Τρόπος λειτουργίας Η ταξινόμηση με συγχώνευση λειτουργεί ως εξής: Διαιρείται η μη ταξινομημένη λίστα σε n υπολίστες, με την καθεμιά να περιέχει από 1 στοιχείο (η λίστα του ενός στοιχείου θεωρείται ταξινομημένη). Επαναληπτικά, συγχωνεύονται οι υπολίστες, ώστε να παραχθούν νέες υπολίστες, μέχρι να απομείνει 1 μόνον υπολίστα (η οποία θα είναι ταξινομημένη.) Η συγχώνευση κάθε λίστας γίνεται από αριστερά προς τα δεξιά!
Merge Sort - Άσκηση Να ταξινομηθεί με τον αλγόριθμο merge sort ο πίνακας Α = [5, 7, 4, 9, 3, 2, 6, 1]. Να φανούν αναλυτικά όλα τα βήματα του αλγορίθμου.
Τέλος παρουσίασης Ερωτήσεις? vstefanis@teimes.gr