ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ
ΤΟ ΠΡΟΒΛΗΜΑ ΤΗΣ ΤΑΞΙΝΟΜΗΣΗΣ Ορισμός ταξινόμησης 2 Κατηγορίες αλγορίθμων ταξινόμησης
Ορισμός Ταξινόμησης 3 Εύρεση μιας αλγοριθμικής διαδικασίας που επιφέρει τάξη σε ένα σύνολο S, τοποθετώντας τα στοιχεία του με αύξουσα σειρά.
Κατηγορίες αλγορίθμων ταξινόμησης 1. Βάσει των πράξεων (συγκρίσεις) στο σύνολο S 2. Βάσει της Πληροφορίας Εισόδου (επίτευξη καλύτερου χρόνου),π.χ. ακεραίων. 3. Βάσει του χώρου αποθήκευσης της εισόδου - Κύριας Μνήμης (Internal Sorting) - Δευτερεύουσας Μνήμης (External Sorting) 4
Αλγόριθμοι ταξινόμησης 5 Βάσει συγκρίσεων Φυσαλίδας (Bubble Sort) Σωρού (Heap Sort) Με συμβολή (Merge Sort) Εισαγωγής (Insertion Sort) Γρήγορη Ταξινόμηση (Quick Sort) Βάσει πληροφορίας εισόδου Ταξινόμηση με μέτρηση (Counting Sort) Radix Sort Bucket Sort
Tαξινόμηση Φυσαλίδας (Bubble Sort) 6
Ταξινόμηση Φυσαλίδας (Bubble Sort) 7 77 42 35 12 101 5 42 77 35 12 101 5 42 35 77 12 101 5 Παράδειγμα Σύνολο προς ταξινόμηση S = {77,42,35,12,101,5} 42 35 12 77 101 5 42 35 12 77 101 5 42 35 12 77 5 101 35 42 12 77 5 101
Ταξινόμηση Φυσαλίδας (Bubble Sort) 35 42 12 77 5 101 8 35 12 42 77 5 101 35 12 42 77 5 101 35 12 42 5 77 101 12 35 42 5 77 101 12 35 42 5 77 101
Ταξινόμηση Φυσαλίδας (Bubble Sort) 12 35 42 5 77 101 9 12 35 5 42 77 101 12 35 5 42 77 101 12 5 35 42 77 101 5 12 35 42 72 101 Ταξινομημένο σύνολο δεδομένων 5 12 35 42 72 101
Insertion Sort (Ταξινόμηση με Εισαγωγή) 10
Ταξινόμηση με Εισαγωγή Παράδειγμα S = {29 10 14 37 13} 1. 29 10 14 37 13 2. 29 29 14 37 13 3. 10 29 14 37 13 4. 10 29 29 37 13 5. 10 14 29 37 13 6. 10 14 29 37 13 7. 10 14 14 29 37 11 1. Αντιγραφή 10 2. Ολίσθηση 29 3. Εισαγωγή 10, Αντιγραφή 14 4. Ολίσθηση 29 5. Εισαγωγή 14, Αντιγραφή 37, Εισαγωγή 37 στην κορυφή της θέσης του 6. Αντιγραφή 13 7. Ολίσθηση 14 10 13 14 29 37 Ταξινομημένο σύνολο
Ταξινόμηση Σωρού (Heap Sort) 12 Βήμα 1: Από το μη ταξινομημένο σύνολο,επέλεξε το μεγαλύτερο στοιχείο, έστω m. Αφαίρεσέ το από το S και τοποθέτησε ως το μικρότερο(αριστερότερο) στοιχείο, ενός ταξινομημένου συνόλου O. Βήμα 2: S = S {m}, ώστε η εύρεση του μεγαλύτερου στοιχείου του S να είναι αποδοτική. Βήμα 3: Θέσε S = S και πήγαινε στο βήμα 1.
Ταξινόμηση Σωρού (Heap Sort) 13 Η Ταξινόμηση Σωρού αποτελείται από δύο φάσεις: Φάση 1-Φάση Δόμησης: Μετατρέπω τον πίνακα S = {s 1, s 2,, s n } σε σωρό ξεκινώντας από την θέση 1. Φάση 2-Φάση Διαλογής: Διαλέγω και απομακρύνω το μεγαλύτερο στοιχείο, το οποίο θα το φέρω στην ρίζα του σωρού ή στο S[1]. Επαναλαμβάνω για τα υπόλοιπα στοιχεία φέρνοντας το μεγαλύτερο στοιχείο στην ρίζα ξεκινώντας πάλι από την θέση 1. Θέλω πάντα να διατηρείται η ιδιότητα του Σωρού, δηλ. τιμή(πατέρας(v)) τιμή(v) Ο αλγόριθμος ταξινόμησης σωρού, χρειάζεται O(nlogn) συγκρίσεις στη χειρότερη περίπτωση για να ταξινομήσει σόνολο n στοιχείων.
Ταξινόμηση Σωρού (Heap Sort) Παράδειγμα Έστω S = {3,8,2,1,4,9,7} 3 14 8 2 1 4 9 7
Ταξινόμηση Σωρού (Heap Sort) Παράδειγμα Έστω S = {3,8,2,1,4,9,7} 3 15 8 2 1 4 9 7 3 8 2 1 4 9 7
Ταξινόμηση Σωρού (Heap Sort) Παράδειγμα Έστω S = {3,8,2,1,4,9,7} 3 16 8 9 1 4 2 7 3 8 9 1 4 2 7
Ταξινόμηση Σωρού (Heap Sort) Παράδειγμα Έστω S = {3,8,2,1,4,9,7} 9 17 8 3 1 4 2 7 9 8 3 1 4 2 7
Ταξινόμηση Σωρού (Heap Sort) Παράδειγμα Έστω S = {3,8,2,1,4,9,7} 9 18 8 7 1 4 2 3 9 8 7 1 4 2 3
Ταξινόμηση Σωρού (Heap Sort) Παράδειγμα Έστω S = {3,8,2,1,4,9,7} 3 19 8 7 1 4 2 3 8 7 1 4 2 9
Ταξινόμηση Σωρού (Heap Sort) Παράδειγμα Έστω S = {3,8,2,1,4,9,7} 8 20 4 7 1 3 2 8 4 7 1 3 2 9
Ταξινόμηση με Συμβολή (Merge Sort) Η βασική ιδέα του αλγόριθμου: 21 Βήμα 1. Διαχώρισε την είσοδο σε δύο τμήματα ίσου περίπου μεγέθους Βήμα 2. Ταξινόμησε τα δύο τμήματα Βήμα 3. Παρήγαγε την τελική ταξινομημένη ακολουθία με συγχώνευση (merging) των δύο ταξινομημέων ακολουθιών
Ταξινόμηση με Συμβολή (Merge Sort) 22
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα Έστω S ={12, 25,57,42,43,19,28,40} 23 12 25 57 42 43 19 28 40
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα Έστω S ={12, 25,57,42,43,19,28,40} 24 12 25 57 42 43 19 28 40 12 25 57 42 43 19 28 40
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα Έστω S ={12, 25,57,42,43,19,28,40} 25 12 25 57 42 43 19 28 40 12 25 57 42 43 19 28 40 12 25 57 42 43 19 28 40
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα Έστω S ={12, 25,57,42,43,19,28,40} 26 12 25 57 42 43 19 28 40 12 25 57 42 43 19 28 40 12 25 57 42 43 19 28 40 12 25 57 12 43 19 28 40
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα 27 12 25 57 42 43 19 28 40 12 25 42 57 19 43 28 40 12 25 42 57 19 43 28 40
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα 28 12 25 57 42 43 19 28 40 12 25 42 57 19 43 28 40 12 25 42 57 19 43 28 40
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα 29 12 25 42 57 19 43 28 40 12 25 42 57 19 43 28 40 12 25 42 57 19 28 40 43
Ταξινόμηση με Συμβολή (Merge Sort) Παράδειγμα 30 12 25 42 57 19 43 28 40 12 25 42 57 19 43 28 40 12 25 42 57 19 28 40 43 12 19 25 28 40 42 43 57
Γρήγορη Ταξινόμηση (Quick Sort) 31
Γρήγορη Ταξινόμηση (Quick Sort) 32
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 33 43 74 22 42 54 11 63 76 32 Left Right
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 43 74 22 42 54 11 63 76 32 Left 74 > 43 Right 32 43
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 43 32 22 42 54 11 63 76 74 Left Right
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 43 32 22 42 54 11 63 76 74
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 43 32 22 42 11 54 63 76 74 Left Right
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 43 32 22 42 11 54 63 76 74 Left Right Οι δείκτες διασταυρώθηκαν οπότε εναλλάσσω τον οδηγό (pivot) με τον δείκτη Right.
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 11 32 22 42 43 54 63 76 74 Left Right Οι δείκτες διασταυρώθηκαν οπότε εναλλάσσω τον οδηγό (pivot) με τον δείκτη Right. Τμήμα ΜΗΧΑΝΙΚΩΝ Η/Υ &
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 11 32 22 42 43 54 63 76 74 Left Right Τιμές pivot Τιμές > pivot
Γρήγορη Ταξινόμηση (Quick Sort) Παράδειγμα Έστω S = {43, 74, 22, 42, 54, 11, 63, 76, 32}, Pivot = 43 11 32 22 42 43 54 63 76 74 Left Right Τιμές pivot Τιμές > pivot Επαναλαμβάνουμε την ίδια διαδικασία για τους υποπίνακες που προέκυψαν
Κάτω όριο ταξινόμησης βάσει συγκρίσεων 42
Άποψη Δένδρου Απόφασης 43 s1:s2 < = > 1,2,3 s2:s3 < = > s1:s3 > < = 2,13 s1:s3 > s2:s3 < = > 1,3,2 3,1,2 2,3,1 3,2,1 Ταξινόμηση μεγέθους 3 S = {s1,s2,s3}
44 ΑΛΓΟΡΙΘΜΟΙ ΤΑΞΙΝΟΜΗΣΗς ΒΑΣΙΖΟΜΕΝΟΙ ΣΕ ΣΥΓΚΡΙΣΕΙΣ- ΤΑΞΙΝΟΜΗΣΗΣ ΑΚΕΡΑΙΩΝ
Ταξινόμηση με Μέτρηση 45
Ταξινόμηση με Μέτρηση 46
Παράδειγμα Ταξινόμηση με Μέτρηση 1 2 3 4 5 6 7 8 Α 5 1 1 2 3 6 3 3 47 C 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 2 0 0 0 1 0 2 1 0 0 1 0 2 1 1 0 1 0 2 1 3 0 1 1
Παράδειγμα Ταξινόμηση με Μέτρηση 1 2 3 4 5 6 7 8 Α 5 1 1 2 3 6 3 3 48 C 1 2 3 4 5 6 2 3 6 6 7 8 B 3 C 2 3 5 6 7 8
Ταξινόμηση Radix 49
Ταξινόμηση Radix 50
Παράδειγμα Ταξινόμηση Radix L = {329,257,892,749,587,134,305}, d = 3 ψηφία, βάση = 10 L 329 257 892 749 587 134 305 B 51 0 1 2 3 4 5 6 7 8 9 892 134 305 587 749 257 329 1 πέρασμα
Παράδειγμα Ταξινόμηση Radix L = {329,257,892,749,587,134,305} 52 L 892 B 0 1 2 3 4 5 6 7 8 9 134 305 587 305 329 134 749 257 587 892 257 749 329 2 πέρασμα
Παράδειγμα Ταξινόμηση Radix L = {329,257,892,749,587,134,305} 53 L 305 B 0 1 2 3 4 5 6 7 8 9 329 134 749 134 257 305 587 749 892 257 587 329 892 3 πέρασμα
Παράδειγμα Ταξινόμηση Radix L = {329,257,892,749,587,134,305} 54 134 257 305 Ταξινομημένη Λίστα 329 587 749 892
Ταξινόμηση Υβριδική 55
Παράδειγμα Ταξινόμηση Υβριδική Α = {0.28,0.42,0.12,0,85,0.47,0.26,0.39,0.02,0.17,0.78} 56 Α 0.78 0.17 B 0 1 2 3 4 5 6 7 8 9 0.02 0.39 0.26 0.02 0.12 0.26 0.39 0.42 0.78 0.85 0.47 0.85 0.17 0.28 0.47 0.12 0.42 n = 10, k = 10 0.28
Παράδειγμα Ταξινόμηση Υβριδική Α = {0.28,0.42,0.12,0,85,0.47,0.26,0.39,0.02,0.17,0.78} 57 0.02 0.12 0.17 0.26 0.28 Ταξινομημένη Λίστα 0.39 0.42 0.47 0.78 0.85
58 ΤΕΛΟΣ