5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

Σχετικά έγγραφα
Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι

Ταξινόμηση. Σαλτογιάννη Αθανασία

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Αλγόριθμοι Ταξινόμησης Μέρος 1

Δομές Δεδομένων και Αλγόριθμοι

Προγραµµατιστικές Τεχνικές

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Προγραμματιστικές Τεχνικές

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

Αλγόριθμοι Ταξινόμησης Μέρος 4

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Πληροφορική 2. Αλγόριθμοι

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

Διαδικασιακός Προγραμματισμός

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch

Η εφαρµογή xsortlab. Οπτικός τρόπος ταξινόµησης

Ελαφρύτερος και βαρύτερος Αλγόριθμοι ταξινόμησης

Ταξινόμηση. Ταξινόμηση ευθείας ανταλλαγής (Φυσαλίδα) 1) Να ταξινομηθεί ο πίνακας Α[Ν] σε αύξουσα σειρά με τη μέθοδο της φυσαλίδας.

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

Σχεδίαση και Ανάλυση Αλγορίθμων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι (ΗΥ120)

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

Αλγόριθμοι Ταξινόμησης Μέρος 2

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

Προγραμματισμός Η/Υ. Αναζήτηση & Ταξινόμηση. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

Ταξινόμηση. Ταξινόμηση ευθείας ανταλλαγής (Φυσαλίδα) 1) Να ταξινομηθεί ο πίνακας Α[Ν] σε αύξουσα σειρά με τη μέθοδο της φυσαλίδας.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Quicksort Κεφάλαιο 7. Ε. Μαρκάκης Επίκουρος Καθηγητής

Ενδεικτικές Ερωτήσεις Θεωρίας

Εργαστηριακή Άσκηση 1

9. Κόκκινα-Μαύρα Δέντρα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Επεξεργασία Ερωτήσεων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Επεξεργασία Ερωτήσεων

Ταξινόµηση. Παύλος Εφραιµίδης. οµές εδοµένων και

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

1η Σειρά Γραπτών Ασκήσεων

Διάλεξη 04: Παραδείγματα Ανάλυσης

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Ταξινόμηση με συγχώνευση Merge Sort

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Επεξεργασία Ερωτήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Προτεινόμενα Θέματα ΑΕΠΠ

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αλγόριθμοι ταξινόμησης

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

Α.1 Τι γνωρίζετε για τον διερμηνευτή, τον μεταγλωττιστή και ποιες οι διαφορές τους. 15 ΜΟΝΑΔΕΣ

δυαδική αναζήτηση Παύλος Σ. Εφραιμίδης

ιαφάνειες παρουσίασης #4

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΡΤΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 6 (ΕΞΙ)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΕΚΠΑΙΔΕΥΤΗΡΙΑ ΝΕΑ ΠΑΙΔΕΙΑ

Δομημένος Προγραμματισμός (ΤΛ1006)

Επιµέλεια Θοδωρής Πιερράτος

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ

Θέματα Προγραμματισμού Η/Υ

Πληροφορική ΙΙ Ενότητα 1

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Εισαγωγή στους Αλγόριθμους

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016

Εισαγωγή Η ταξινόμηση (sorting) είναι ένα από τα βασικά προβλήματα στην επιστήμη των υπολογιστών π.χ. Ονόματα σε αλφαβητική σειρά, πωλήσεις ανά τιμή, πόλεις με βάση πληθυσμό,... Η ταξινόμηση δεδομένων μπορεί να είναι ένα πρώτο βήμα προς την αναζήτηση (θυμηθείτε τη δυαδική αναζήτηση) Η ταξινόμηση είναι σημαντική και πολύ χρονοβόρα Αποτέλεσε θέμα εκτεταμένων ερευνών Αναπτύχθηκαν πολλές διαφορετικές μέθοδοι ταξινόμησης είτε για παράδειγμα: http://en.wikipedia.org/wiki/sorting_algorithm Δομές Δεδομένων, 3ο Εξάμηνο 2

Αλγόριθμοι Απλής Ταξινόμησης Ταξινόμηση φυσαλίδας (bubble sort) Ταξινόμηση επιλογής (selection sort) Ταξινόμηση παρεμβολής (insertion sort) Οι παραπάνω αλγόριθμοι είναι σχετικά άτεχνοι και συγκριτικά αργοί Αξίζει να εξεταστούν διότι γίνονται εύκολα κατανοητοί Μερικές φορές λειτουργούν καλύτερα από πιο εκλεπτυσμένους αλγόριθμους Για μικρά αρχεία ή για σχεδόν ταξινομημένα αρχεία Η ταξινόμηση παρεμβολής είναι καλύτερη από την quicksort Δομές Δεδομένων, 3ο Εξάμηνο 3

Βασικά Βήματα των Αλγορίθμων Ένα πρόγραμμα μπορεί μόνο να συγκρίνει δύο στοιχεία κάθε φορά (δεν μπορεί να έχει μια καθολική εικόνα στα δεδομένα όπως ο άνθρωπος) Οι τρεις αλγόριθμοι που θα εξετάσουμε αποτελούνται από δύο βήματα και εκτελούνται συνεχώς μέχρι να ταξινομηθούν τα δεδομένα 1. Συγκρίνουν δύο στοιχεία 2. Αντιμεταθέτουν δύο στοιχεία ή αντιγράφουν ένα Δομές Δεδομένων, 3ο Εξάμηνο 4

1. Ταξινόμηση Φυσαλίδας (Bubble Sort) Απλή αλλά αργή μέθοδος ταξινόμησης Συγκρίνει κάθε στοιχείο στη γραμμή με το επόμενο στοιχείο και αντιμεταθέτει τα στοιχεία εάν χρειαστεί H διαδικασία επαναλαμβάνεται μέχρι να κάνει ένα πέρασμα της γραμμής χωρίς να χρειαστεί να αντιμεταθέσει κάποια στοιχεία Οι μεγαλύτερες τιμές μετακινούνται στο τέλος της γραμμής ενώ οι μικρότερες προς την αρχή της γραμμής Δομές Δεδομένων, 3ο Εξάμηνο 5

Βήματα Αλγορίθμου Τα βήματα του αλγορίθμου ταξινόμησης φυσαλίδας: Σύγκρινε τα γειτονικά στοιχεία Εάν το πρώτο είναι μεγαλύτερο από το δεύτερο, αντιμετάθεσέ τα Μετακινήσου μια θέση δεξιά και επανέλαβε τα βήματα για όλα τα στοιχεία (ολοκλήρωση πρώτου περάσματος) Συνέχισε τη διαδικασία μέχρι να μην υπάρχουν άλλα ζεύγη για να συγκρίνεις Ο αλγόριθμος αυτός ταξινομεί τα στοιχεία σε αύξουσα σειρά. Πώς θα τον τροποποιούσατε ώστε να ταξινομεί σε φθίνουσα σειρά; Δομές Δεδομένων, 3ο Εξάμηνο 6

Παράδειγμα: Ταξινόμηση Φυσαλίδας (1 η Σάρωση) Επανέλαβε μέχρι να μην απαιτούνται άλλες αλλαγές Δομές Δεδομένων, 3ο Εξάμηνο 7

Παρατηρήσεις Μετά το πρώτο πέρασμα από τα δεδομένα Έχουν γίνει Ν-1 συγκρίσεις Έχουν γίνει από 0 ως Ν-1 αντιμεταθέσεις Το στοιχείο στο τέλος του πίνακα έχει ταξινομηθεί και δε θα μετακινηθεί ξανά Μετά το δεύτερο πέρασμα από τα δεδομένα... Έχουν γίνει άλλες Ν-2 συγκρίσεις Έχουν γίνει από 0 ως Ν-2 νέες αντιμεταθέσεις Το στοιχείο που βρίσκεται μία θέση πριν το τέλος του πίνακα έχει ταξινομηθεί και δε θα μετακινηθεί ξανά Δομές Δεδομένων, 3ο Εξάμηνο 8

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 9

Δομές Δεδομένων, 3ο Εξάμηνο 10

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 11

Σταθερές Σε πολλούς αλγόριθμους υπάρχουν συνθήκες που παραμένουν αναλλοίωτες καθώς εξελίσσεται ο αλγόριθμος Αυτές οι συνθήκες ονομάζονται σταθερές Είναι χρήσιμες για την κατανόηση του αλγόριθμου αλλά και για debugging Στον αλγόριθμο φυσαλίδας Η σταθερά είναι ότι τα στοιχεία δεξιά του out είναι ταξινομημένα Αυτό ισχύει καθ όλη την εκτέλεση του αλγόριθμου Δομές Δεδομένων, 3ο Εξάμηνο 12

Ανάλυση Πολυπλοκότητας Αλγόριθμου Φυσαλίδας Έστω Ν στοιχεία Στο 1 ο πέρασμα Ν-1 συγκρίσεις, στο 2 ο πέρασμα Ν-2 συγκρίσεις,... Συνεπώς: (Ν-1)+(Ν-2)+...+1=Ν*(Ν-1)/2 συγκρίσεις Άρα περίπου Ν 2 /2 συγκρίσεις Οι αντιμεταθέσεις είναι λιγότερες από τις συγκρίσεις Για τυχαία δεδομένα, μια αντιμετάθεση είναι απαραίτητη περίπου τις μισές φορές Ν 2 /4 αντιμεταθέσεις Στη χειρότερη περίπτωση (αντίστροφα ταξινομημένος πίνακας) απαιτούνται τόσες αντιμεταθέσεις όσες και συγκρίσεις Οι συγκρίσεις και αντιμεταθέσεις είναι ανάλογες του Ν 2 Ο(Ν 2 ) Δομές Δεδομένων, 3ο Εξάμηνο 13

Απλή Βελτίωση της BubbleSort Βελτιώστε την BubbleSort ώστε να σταματήσει την εκτέλεσή της μόλις ο πίνακας ταξινομηθεί Δομές Δεδομένων, 3ο Εξάμηνο 14

2. Ταξινόμηση Επιλογής (Selection Sort) H ταξινόμηση επιλογής βελτιώνει την ταξινόμηση φυσαλίδας μειώνοντας τον αριθμό των αντιμεταθέσεων που είναι απαραίτητες από Ο(Ν 2 ) σε Ο(Ν) Ο αριθμός συγκρίσεων παραμένει Ο(Ν 2 ) Προσφέρει σημαντική βελτίωση όταν τα αντικείμενα που πρέπει να αντιμετατίθενται στη μνήμη έχουν μεγάλο όγκο δεδομένων ε συμβαίνει στη Java που λειτουργεί με αναφορές σε αντικείμενα Δομές Δεδομένων, 3ο Εξάμηνο 15

Βασική Ιδέα Επέλεξε το μικρότερο μη ταξινομημένο στοιχείο που παραμένει στη γραμμή Αντιμετάθεσε το στοιχείο αυτό με το στοιχείο στην επόμενη προς συμπλήρωση θέση Δομές Δεδομένων, 3ο Εξάμηνο 16

Παράδειγμα: Ταξινόμηση Επιλογής Παράδειγμα November 18, 2016 διαφάνειες μαθήματος Data Δομές structures, Δεδομένων, GMU, 3ο Εξάμηνο 2005 (instructor: J. Lin) 17

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 18

Δομές Δεδομένων, 3ο Εξάμηνο 19

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 20

Ανασκόπηση Αλγόριθμου Επιλογής Σταθερά Τα στοιχεία με δείκτες μικρότερους ή ίσους με το out είναι πάντα ταξινομημένα Απόδοση Χρειάζονται πολύ λιγότερες αντιμεταθέσεις σε σχέση με τον αλγόριθμο φυσαλίδας Για μικρές τιμές του Ν, η ταξινόμηση επιλογής μπορεί να είναι σημαντικά ταχύτερη Ειδικά εάν ο χρόνος που απαιτείται για μια αντιμετάθεση είναι πολύ μεγαλύτερος από το χρόνο μιας σύγκρισης Δομές Δεδομένων, 3ο Εξάμηνο 21

Απλή Βελτίωση της SelectionSort Βελτιώστε την SelectionSort ώστε να κάνει τα μισά περάσματα στον αρχικό πίνακα Ιδέα: Καθώς διατρέχει τον πίνακα ο εσωτερικός βρόχος for, να διατηρούμε όχι μόνο το min, αλλά και το max Στο τέλος του περάσματος του πίνακα, ενημερώνω όχι μόνο την πρώτη θέση του πίνακα με το a[min], αλλά και την τελευταία με το a[max] Στο επόμενο πέρασμα εξετάζω πίνακα μήκους N-2 (δλδ. αγνοώ το πρώτο και το τελευταίο στοιχείο, που είναι πλέον ήδη στη σωστή θέση) Δομές Δεδομένων, 3ο Εξάμηνο 22

3. Ταξινόμηση Παρεμβολής (Insertion Sort) Εισάγει κάθε αντικείμενο στην κατάλληλη θέση στην τελική γραμμή Μετακινεί το τρέχον στοιχείο πέρα από τα ήδη ταξινομημένα στοιχεία και επαναληπτικά το αντιμεταθέτει με τα προηγούμενα στοιχεία μέχρι να τοποθετηθεί στη κατάλληλη θέση Δομές Δεδομένων, 3ο Εξάμηνο 23

Παράδειγμα: Ταξινόμηση Παρεμβολής November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 24

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 25

Δομές Δεδομένων, 3ο Εξάμηνο 26

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 27

Σταθερές Στην ταξινόμηση παρεμβολής Στο τέλος κάθε περάσματος, μετά την εισαγωγή στοιχείου από το temp, τα στοιχεία με μικρότερους δείκτες από το out είναι μερικώς ταξινομημένα (=ταξινομημένα μεταξύ τους) Μια (ποιοτική) διαφορά της σταθεράς στην ταξινόμηση παρεμβολής σε σχέση με τις σταθερές στην φυσαλίδα και στην επιλογή: Σε κάποια ενδιάμεση επανάληψη, τα μερικώς ταξινομημένα στοιχεία δε βρίσκονται εγγυημένα στην τελική τους θέση!!! Δομές Δεδομένων, 3ο Εξάμηνο 28

Ανάλυση Πολυπλοκότητας Αλγόριθμου Παρεμβολής Συγκρίσεις: Το μέγιστο: 1 + 2 + 3 +... + (Ν-1) = Ν*(Ν-1)/2 Σε κάθε πέρασμα κατά μέσο όρο συγκρίνονται μόνο τα μισά στοιχεία, πριν βρεθεί το σημείο εισαγωγής. Συνεπώς: Αριθμός συγκρίσεων=ν*(ν-1)/4 Ο αριθμός των αντιγραφών είναι περίπου ο ίδιος με τον αριθμό των συγκρίσεων Όμως μια αντιγραφή είναι φθηνότερη από μια αντιμετάθεση (βλέπε bubblesort) Γενικά Η ταξινόμηση παρεμβολής εκτελείται σε Ο(Ν 2 ) για τυχαία δεδομένα Όταν όμως τα δεδομένα είναι σχεδόν ταξινομημένα, εκτελείται σε Ο(Ν) Δομές Δεδομένων, 3ο Εξάμηνο 29

Παρατήρηση Έστω ότι θέλουμε να ταξινομήσουμε τα Κ πρώτα στοιχεία ενός πίνακα Ν στοιχείων Ποιος αλγόριθμος από του 3 που μάθαμε μπορεί να χρησιμοποιηθεί για αυτό το σκοπό, χωρίς να εκτελεστεί εξ ολοκλήρου; εν μπορεί να χρησιμοποιηθεί ο InsertionSort για αυτό το σκοπό!!! November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 30

Ταξινόμηση Αντικειμένων Οι αλγόριθμοι ταξινόμησης εφαρμόζονται και σε αντικείμενα, όχι μόνο σε βασικούς τύπους Παράδειγμα Ταξινόμηση αντικειμένων Person Χρήση ταξινόμησης παρεμβολής (insertion sort) Τα αντικείμενα Person ταξινομούνται αλφαβητικά βάσει του επωνύμου τους (lastname) Δομές Δεδομένων, 3ο Εξάμηνο 31

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 32

Δομές Δεδομένων, 3ο Εξάμηνο 33

Δομές Δεδομένων, 3ο Εξάμηνο 34

November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 35

Σύγκριση Αλγορίθμων Απλής Ταξινόμησης Η ταξινόμηση φυσαλίδας είναι απλή αλλά είναι χρήσιμη μόνο αν η ποσότητα των προς επεξεργασία δεδομένων είναι μικρή Η ταξινόμηση επιλογής ελαχιστοποιεί τον αριθμό των αντιμεταθέσεων αλλά ο αριθμός των συγκρίσεων παραμένει υψηλός Μπορεί να είναι χρήσιμη όταν η ποσότητα των δεδομένων είναι μικρή και η αντιμετάθεση των στοιχείων είναι πολύ χρονοβόρα σε σχέση με τη σύγκρισή τους. Η ταξινόμηση παρεμβολής είναι πιο ευέλικτη και η καλύτερη επιλογή στις περισσότερες περιπτώσεις, αν υποθέσουμε ότι η ποσότητα των δεδομένων είναι μικρή ή τα δεδομένα είναι σχεδόν ταξινομημένα Δομές Δεδομένων, 3ο Εξάμηνο 36

Ερωτήσεις 1. Σωστό ή λάθος: Η ταξινόμηση φυσαλίδας τελικά συγκρίνει κάθε στοιχείο με όλα τα άλλα 2. Σωστό ή λάθος: Αν υπάρχουν Ν στοιχεία, η ταξινόμηση φυσαλίδας κάνει ακριβώς Ν*Ν συγκρίσεις 3. Μία αντιγραφή διαρκεί φορές πιο γρήγορα από μία αντιμετάθεση Δομές Δεδομένων, 3ο Εξάμηνο 37

Ταξινόμηση Σύζευξης (MergeSort) Η ταξινόμηση σύζευξης είναι πολύ αποδοτικότερη από τους αλγόριθμους ταξινόμησης που έχουμε δει ως τώρα Έχει πολυπλοκότητα O(N*logN) Οι αλγόριθμοι που έχουμε δει ως τώρα έχουν O(N 2 ) Είναι σχετικά απλή στην υλοποίησή της Μειονέκτημα Απαιτεί έναν επιπλέον πίνακα στη μνήμη, ίσο σε μέγεθος με αυτόν που ταξινομείται Δομές Δεδομένων, 3ο Εξάμηνο 38

Βασική Ιδέα: Σύζευξη Ταξινομημένων Πινάκων Α 23 42 87 99 C 0 1 2 3 4 5 6 7 8 12 21 23 42 55 77 87 92 99 Β 12 21 55 77 92 Η σύζευξη δύο ταξινομημένων πινάκων A και B δημιουργεί έναν τρίτο πίνακα C, που περιέχει όλα τα στοιχεία των A και B ταξινομημένα Υποθέστε ότι αρχικά ο C είναι κενός Το σχήμα δείχνει τον C μετά τη διαδικασία συγχώνευσης Δομές Δεδομένων, 3ο Εξάμηνο 39

Παράδειγμα MergeSort November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 40

Πολυπλοκότητα Ταξινόμησης Σύζευξης Κάθε βήμα (που είναι συγχωνεύσεις πολλών γειτονικών υποπινάκων) απαιτεί O(n) χρόνο Το πλήθος των βημάτων καθορίζει την πολυπλοκότητα του αλγορίθμου Το τέλος κάθε βήματος: έχει υποδιπλασιάσει το πλήθος των ζευγαριών που απαιτούν συγχώνευση στο επόμενο βήμα έχει διπλασιάσει το μήκος των ταξινομημένων υπο-πινάκων Αν ο αλγόριθμος κάνει k βήματα συγχωνεύσεων, στο k- στό βήμα: Μήκος ταξινομημένου υποπίνακα: 2^k = n. Επομένως, k = log n Άρα η πολυπλοκότητα του αλγορίθμου είναι O(n logn) Δομές Δεδομένων, 3ο Εξάμηνο 41

Πολυπλοκότητα Ταξινόμησης Σύζευξης Ο αλγόριθμος MergeSort είναι βέλτιστος μεταξύ των αλγορίθμων που χρησιμοποιούν συγκρίσεις ηλαδή δεν υπάρχει αλγόριθμος που χρησιμοποιεί συγκρίσεις και έχει καλύτερη ασυμπτωτική πολυπλοκότητα χειρότερης περίπτωσης από τον MergeSort (και αυτό αποδεικνύεται) November 18, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 42