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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n

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

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

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

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

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

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

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Φροντιστήριο 2 ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

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

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

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

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

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

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

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

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

int Α[] = {4, 16, 22, 12, 9, 15, 10}; { 4, 9, 10, 12, 15, 16, 22 } Α[0]=4, Α[1]=9, Α[2]=10 { 4, 16,22, 12, 9, 15, 10} { 4, 12, 16, 22, 9, 15,16, 22 }

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

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

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

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

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

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

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

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

Κεφάλαιο 5. Ανάλυση αλγορίθμων

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

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

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

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

Προχωρημένες έννοιες προγραμματισμού σε C

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

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

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

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

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

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

5.1. Προσδοκώμενα αποτελέσματα

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

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

6. Αφού δημιουργήσετε ένα πίνακα 50 θέσεων με ονόματα μαθητών να τον ταξινομήσετε αλφαβητικά με την μέθοδο της φυσαλίδας

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

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

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

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

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

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

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

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

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

ΕΝΔΕΙΚΤΙΚΕΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α Α1. 1 ΣΩΣΤΟ 2 ΛΑΘΟΣ 3 ΛΑΘΟΣ 4 ΛΑΘΟΣ 5 ΣΩΣΤΟ

Επαναληπτικό Διαγώνισμα

φροντιστήρια Θέματα Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ λυκείου Προσανατολισμός Σπουδών Οικονομίας και Πληροφορικής

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

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

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αλγόριθµοι και Πολυπλοκότητα

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

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Transcript:

Ταξινόμηση: Εισαγωγικά Ταξινόμηση (Sor ng) Ορέστης Τελέλης Βασικό πρόβλημα για την Επιστήμη των Υπολογιστών. π.χ. αλφαβητική σειρά, πωλήσεις ανά τιμή, πόλεις με βάση πληθυσμό, Μπορεί να είναι ένα πρώτο βήμα προς την αποδοτική αναζήτηση: telelis@unipi.gr Θυμηθείτε τη δυαδική αναζήτηση σε ταξινομημένους πίνακες. Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Σημαντική και πολύ χρονοβόρα: αντικείμενο εκτεταμένων ερευνών. Αναπτύχθηκαν πολλοί και διαφορετικοί αλγόριθμοι ταξινόμησης. Δείτε για παράδειγμα: h p://en.wikipedia.org/wiki/sor ng_algorithm Donald Knuth., Vol. 3: Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 1 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 2 / 44 Αλγόριθμοι Απλής Ταξινόμησης Βασικά Βήματα των Αλγορίθμων Σχετικά αργοί αλγόριθμοι. Αξίζει να εξεταστούν, διότι: Κατανοούμε επακριβώς τη λειτουργία τους. Κατά περιπτώσεις πιο αποδοτικοί από πιο ταχύτερους αλγόριθμους. Π.χ., η αποδοτική για μικρή ή σχεδόν ταξινομημένη είσοδο. Ενα πρόγραμμα μπορεί μόνο (?) να δε μπορεί να έχει μια καθολική εικόνα στα δεδομένα όπως ο άνθρωπος. Εκτελεί «τοπική» εξέταση των δεδομένων. Οι τρεις αλγόριθμοι που μελετάμε εκτελούν επαναλαμβανόμενα: μεταξύ δύο στοιχείων. δύο στοιχείων ενός στοιχείου μέχρι οι συγκρίσεις στοιχείων σε διαφορετικές θέσεις να είναι «σωστές». Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 3 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 4 / 44

1. Ταξινόμηση Φυσαλίδας (Bubble Sort) Βήματα Αλγορίθμου Ταξινόμησης Φυσαλίδας Απλή αλλά αργή επαναληπτική μέθοδος ταξινόμησης. Σε κάθε επανάληψη σαρώνει την ακολουθία των στοιχείων. Συγκρίνει κάθε στοιχείο στην ακολουθία με το επόμενο: αντιμεταθέτει τα στοιχεία αν είναι σε «λάθος» σειρά. Επαναλαμβάνει, μέχρι σε κάποια σάρωση να μη συμβεί αντιμετάθεση. Υποθέτοντας ταξινόμηση σε αύξουσα σειρά: Κάθε σάρωση εκτελείται σε ακολουθία μικρότερη κατά ένα στοιχείο. Σύγκρινε τα γειτονικά στοιχεία. Εάν το πρώτο είναι μεγαλύτερο από το δεύτερο, αντιμετάθεσέ τα. Μετακινήσου μια θέση δεξιά και επανάλαβε για όλα τα στοιχεία (ολοκλήρωση πρώτης σάρωσης). Συνέχισε μέχρι να μην υπάρχουν άλλα ζεύγη για να συγκρίνεις Ο αλγόριθμος αυτός ταξινομεί τα στοιχεία σε αύξουσα σειρά. Πώς θα τον τροποποιούσατε ώστε να ταξινομεί σε φθίνουσα σειρά? Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 5 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 6 / 44 Ταξινόμηση Φυσαλίδας (Παράδειγμα 1ης Σάρωσης) Ταξινόμηση Φυσαλίδας (Παράδειγμα Εκτέλεσης) 23 12 58 7 10 Σύγκρινε 23, 12. 12 23 58 7 10 Αντιμετάθεσε 23, 12. 12 23 58 7 10 Σύγκρινε 23, 58. 12 23 58 7 10 Σύγκρινε 58, 7. 12 23 7 58 10 Αντιμετάθεσε 58, 7. 12 23 7 58 10 Σύγκρινε 58, 10. 12 23 7 10 58 Αντιμετάθεσε 58, 10. swapped = true j := n 1 j > 0 swapped == true: swapped := false i := 1 j 1: a i > a i+1 : tmp := a i+1 a i+1 := a i a i := tmp swapped := true j := j 1. Είσοδος: 1η Σαρ.: 2η Σαρ.: 3η Σαρ.: 4η Σαρ.: a 0 a 1 a 2 a 3 a 4 23 12 58 7 10 23 12 58 7 10 23 12 7 10 23 12 7 10 12 7 10 12 7 10 7 10 7 10 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 7 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 8 / 44

Υλοποίηση Ταξινόμησης Φυσαλίδας ArrayBub { [ ] a ; nelems ; ArrayBub ( max ) { a = [ max ] ; nelems = 0 ; i n s e r t ( v a l u e ) { a [ nelems ] = v a l u e ; nelems + + ; d i s p l a y ( ) { ( j = 0 ; j < nelems ; j ++) System. out. p r i n t ( a [ j ] + ) ; System. out. p r i n t l n ( ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 9 / 44 Υλοποίηση Ταξινόμησης Φυσαλίδας b u b b l e S o r t ( ) { swapped = ; j = nelems 1; ( j > 0 && swapped == ) { swapped = ; ( i = 0 ; i < j ; i ++) ( a [ i ] > a [ i +1] ) { swap ( i, i +1) ; swapped = ; j = j 1 ; swap ( one, two ) { temp = a [ one ] ; a [ one ] = a [ two ] ; a [ two ] = temp ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 10 / 44 Υλοποίηση Ταξινόμησης Φυσαλίδας Αναλλοίωτες Συνθήκες BubbleSortApp { main ( S t r i n g [ ] a r g s ) { maxsize = 100; ArrayBub a r r ; a r r = ArrayBub ( maxsize ) ; a r r. i n s e r t ( 7 7 ) ; a r r. i n s e r t ( 9 9 ) ; a r r. i n s e r t ( 4 4 ) ; a r r. i n s e r t ( 5 5 ) ; a r r. i n s e r t ( 2 2 ) ; a r r. i n s e r t ( 8 8 ) ; a r r. i n s e r t ( 1 1 ) ; a r r. i n s e r t ( 0 0 ) ; a r r. i n s e r t ( 6 6 ) ; a r r. i n s e r t ( 3 3 ) ; a r r. d i s p l a y ( ) ; a r r. b u b b l e S o r t ( ) ; a r r. d i s p l a y ( ) ; Είναι χρήσιμες για την: κατανόηση της λειτουργίας του αλγόριθμου, τυπική τεκμηρίωση της ορθότητάς του, ανάλυση της πολυπλοκότητας του αλγορίθμου, αποσφαλμάτωση (debugging) της υλοποίησης. Η αναλλοίωτη είναι ότι τα στοιχεία δεξιά του j είναι ταξινομημένα. Αυτό ισχύει καθόλη την εκτέλεση του αλγόριθμου. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 11 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 12 / 44

Ανάλυση Πολυπλοκότητας Αλγορίθμου Φυσαλίδας Ανάλυση Πολυπλοκότητας Αλγόριθμου Φυσαλίδας Πλήθος Συγκρίσεων: n 1. Πλήθος Αντιμεταθέσεων: 0 έως n 1. Το στοιχείο στο τέλος του πίνακα ταξινομήθηκε: δε θα μετακινηθεί ξανά. Πλήθος Συγκρίσεων: n 2. Πλήθος Αντιμεταθέσεων: 0 έως n 2. Το στοιχείο στην προτελευταία θέση ταξινομήθηκε: δε μετακινείται ξανά. Στην 1η σάρωση n 1 συγκρίσεις, στη 2η σάρωση n 2 συγκρίσεις, Αρα: (n 1) + (n 2) + + 1 = n(n 1)/2 = O(n 2 ) συγκρίσεις. Στην 1η σάρωση n 1 αντιμεταθέσεις, στη 2η σάρωση n 2, Στη χειρότερη περίπτωση n(n 1)/2 = O(n 2 ) αντιμεταθέσεις. ( ) Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 13 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 14 / 44 2. Ταξινόμηση Επιλογής (Selec on Sort) H ταξινόμηση επιλογής βελτιώνει την ταξινόμηση φυσαλίδας: μειώνει το πλήθος των αντιμεταθέσεων από O(n 2 ) σε O(n). Βασική Ιδέα i 0 n 2 i: j μεταξύ των i,..., n 1. Αντιμεταθέτει τα στοιχεία των θέσεων i και j εφόσον χρειάζεται. Ο αριθμός συγκρίσεων παραμένει O(n 2 ). Σημαντική βελτίωση για «ογκώδη» αντιμετατιθέμενα αντικείμενα: σε υλοποιήσεις με πραγματικές «αντιγραφές» αντικειμένων. μπορεί να συμβαίνει σε υλοποιήσεις C/C++. στη Java πάντα αντιμεταθέτουμε αναφορές (διευθύνσεις μνήμης). Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 15 / 44 i := 0 n 2: j := i t := i + 1 n 1: - a t < a j: j := t tmp := a i a i := a j a j := tmp Είσοδος: 1η Επαν.: 2η Επαν.: 3η Επαν.: 4η Επαν.: a 0 a 1 a 2 a 3 a 4 23 12 58 7 10 23 12 58 7 10 12 58 10 12 58 23 10 58 23 58 23 12 23 23 58 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 16 / 44

Παράδειγμα: Ταξινόμηση Επιλογής 23 12 58 7 10 Σύγκρινε το ελάχιστο στοιχείο (7) με το στοιχείο στη θέση 0 (23). 7 12 58 23 10 Αντιμετάθεσε 23, 7. 7 12 58 23 10 Σύγκρινε το επόμενο ελάχιστο (10) με το στοιχείο στη θέση 1 (12). 7 10 58 23 12 Αντιμετάθεσε 12, 10. 7 10 58 23 12 Σύγκρινε το επόμενο ελάχιστο (12) με το στοιχείο στη θέση 2 (58). 7 10 12 23 58 Αντιμετάθεσε 58, 12. 7 10 12 23 58 Συγκρινε το επόμενο ελάχιστο (23) με το στοιχείο στη θέση 3 (23). 7 10 12 23 58 Συγκρινε το επόμενο ελάχιστο (58) με το στοιχείο στη θέση 4 (58). Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 17 / 44 Υλοποίηση Ταξινόμησης Επιλογής A r r a y S e l { [ ] a ; nelems ; A r r a y S e l ( max ) { a = [ max ] ; nelems = 0 ; i n s e r t ( v a l u e ) { a [ nelems ] = v a l u e ; nelems + + ; d i s p l a y ( ) { ( j = 0 ; j < nelems ; j ++) System. out. p r i n t ( a [ j ] + ) ; System. out. p r i n t l n ( ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 18 / 44 Υλοποίηση Ταξινόμησης Επιλογής Υλοποίηση Ταξινόμησης Επιλογής s e l e c t i o n S o r t ( ) { ( i = 0 ; i < nelems 1; i + +) { j = i ; ( t = i + 1 ; t < nelems ; t ++) ( a [ t ] < a [ j ] ) j = t ; swap ( i, j ) ; swap ( one, two ) { temp = a [ one ] ; a [ one ] = a [ two ] ; a [ two ] = temp ; S e l e c t S o r t A p p { main ( S t r i n g [ ] a r g s ) { maxsize = 100; A r r a y S e l a r r ; a r r = A r r a y S e l ( maxsize ) ; a r r. i n s e r t ( 7 7 ) ; a r r. i n s e r t ( 9 9 ) ; a r r. i n s e r t ( 4 4 ) ; a r r. i n s e r t ( 5 5 ) ; a r r. i n s e r t ( 2 2 ) ; a r r. i n s e r t ( 8 8 ) ; a r r. i n s e r t ( 1 1 ) ; a r r. i n s e r t ( 0 0 ) ; a r r. i n s e r t ( 6 6 ) ; a r r. i n s e r t ( 3 3 ) ; a r r. d i s p l a y ( ) ; a r r. s e l e c t i o n S o r t ( ) ; a r r. d i s p l a y ( ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 19 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 20 / 44

Ανασκόπηση Αλγόριθμου Επιλογής 3. Ταξινόμηση Παρεμβολής (Inser on Sort) i O(n 2 ) (καθορίζεται από το πλήθος των συγκρίσεων). Πολύ λιγότερες - O(n) - αντιμεταθέσεις, από τον αλγόριθμο φυσαλίδας. Για μικρό n, η ταξινόμηση επιλογής μπορεί να είναι σημαντικά ταχύτερη. Ειδικά εάν ο χρόνος που απαιτείται για μια αντιμετάθεση είναι πολύ μεγαλύτερος από το χρόνο μιας σύγκρισης. Επισκέπτεται κάθε θέση i = 0,..., n 1 της ακολουθίας εισόδου. i Διατρέχει «όπισθεν» την ακολουθία, a j a i, για j < i. Μετακινεί τα στοιχεία αυτά μία θέση «προς τα εμπρός». Εισάγει (παρεμβάλλει) το στοιχείο a i στην κενή θέση που δημιουργείται. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 21 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 22 / 44 Ταξινόμηση Παρεμβολής Παράδειγμα: Ταξινόμηση Παρεμβολής 23 12 58 7 10 Επεξεργασία του 12. i := 1 n 1: tmp := a[i] j := i j > 0 a j 1 tmp: a j := a j 1 j = j 1 a j := tmp Είσοδος: 1η Επαν.: 2η Επαν.: 3η Επαν.: 4η Επαν.: a 0 a 1 a 2 a 3 a 4 23 12 58 7 10 12 58 7 10 58 7 10 58 7 10 7 10 7 10 10 10 23 58 7 10 Μετακινούμε το 23 για να κάνουμε χώρο για το 12. 12 23 58 7 10 Εισάγουμε το 12 στη θέση 0. 12 23 58 7 10 Επεξεργασία του 7. 12 23 58 10 Μετακινούμε τα 12, 23, 58 για να κάνουμε χώρο για το 7. 7 12 23 58 10 Εισάγουμε το 7 στη θέση 0. 7 12 23 58 10 Επεξεργασία του 10. 7 12 23 58 Mετακινούμε τα 12, 23, 58, για να κάνουμε χώρο για το 10. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 23 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 24 / 44

Υλοποίηση Ταξινόμησης Παρεμβολής Υλοποίηση Ταξινόμησης Παρεμβολής A r r a y I n s { [ ] a ; nelems ; A r r a y I n s ( max ) { a = [ max ] ; nelems = 0 ; i n s e r t ( v a l u e ) { a [ nelems ] = v a l u e ; nelems + + ; d i s p l a y ( ) { ( j = 0 ; j < nelems ; j ++) System. out. p r i n t ( a [ j ] + ) ; System. out. p r i n t l n ( ) ; i n s e r t i o n S o r t ( ) { ( i = 1 ; i < nelems ; i + +) { temp = a [ i ] ; j = i ; ( j >0 && a [ j 1] >= temp ) { a [ j ] = a [ j 1]; j ; a [ j ] = temp ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 25 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 26 / 44 Υλοποίηση Ταξινόμησης Παρεμβολής I n s e r t S o r t A p p { main ( S t r i n g [ ] a r g s ) { maxsize = 100; A r r a y I n s a r r ; a r r = A r r a y I n s ( maxsize ) ; a r r. i n s e r t ( 7 7 ) ; a r r. i n s e r t ( 9 9 ) ; a r r. i n s e r t ( 4 4 ) ; a r r. i n s e r t ( 5 5 ) ; a r r. i n s e r t ( 2 2 ) ; a r r. i n s e r t ( 8 8 ) ; a r r. i n s e r t ( 1 1 ) ; a r r. i n s e r t ( 0 0 ) ; a r r. i n s e r t ( 6 6 ) ; a r r. i n s e r t ( 3 3 ) ; a r r. d i s p l a y ( ) ; a r r. i n s e r t i o n S o r t ( ) ; a r r. d i s p l a y ( ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 27 / 44 Ανασκόπηση Ταξινόμησης Παρεμβολής Στο τέλος κάθε επανάληψης, τα στοιχεία με μικρότερους δείκτες από i είναι ταξινομημένα μεταξύ τους. n 1 επαναλήψεις (διότι το i είναι από 1 έως n 1). Στην i-οστή επαν.: ολίσθηση κατά 1 θέση το πολύ i 1 στοιχείων. Περίπου ίδιο πλήθος συγκρίσεων και αντιγραφών (ολισθήσεων). Αρα, συνολικό πλήθος βημάτων: n 1 (i 1) = 1 + 2 + + (n 2) = O(n 2 ) i=1 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 28 / 44

Ταξινόμηση Αντικειμένων Ταξινομούνται και σύνθετα αντικείμενα, όχι μόνο οι βασικοί τύποι. Ταξινόμηση αντικειμένων τύπου Person. Χρήση ταξινόμησης παρεμβολής (inser on sort). Αλφαβητική ταξινόμηση βάσει του επωνύμου (πεδίο lastname). Παράδειγμα Ταξινόμησης Αντικειμένων Person { S t r i n g lastname ; S t r i n g f i r s t N a m e ; age ; Person ( S t r i n g l a s t, S t r i n g f i r s t, a ) { lastname = l a s t ; f i r s t N a m e = f i r s t ; age = a ; d i s p l a y P e r s o n ( ) { System. out. p r i n t ( L a s t name : + lastname ) ; System. out. p r i n t (, F i r s t name : + f i r s t N a m e ) ; System. out. p r i n t l n (, Age : + age ) ; S t r i n g g e t L a s t ( ) { lastname ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 29 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 30 / 44 Παράδειγμα Ταξινόμησης Αντικειμένων Παράδειγμα Ταξινόμησης Αντικειμένων ArrayInOb { Person [ ] a ; nelems ; ArrayInOb ( max ) { a = Person [ max ] ; nelems = 0 ; i n s e r t ( S t r i n g l a s t, S t r i n g f i r s t, age ) { a [ nelems ] = Person ( l a s t, f i r s t, age ) ; nelems + + ; d i s p l a y ( ) { ( j = 0 ; j < nelems ; j ++) a [ j ]. d i s p l a y P e r s o n ( ) ; i n s e r t i o n S o r t ( ) { ( i = 1 ; i < nelems ; i ++) { Person temp = a [ i ] ; j = i ; ( j >0 && a [ j 1]. g e t L a s t ( ). compareto ( temp. g e t L a s t ( ) ) >0) { a [ j ] = a [ j 1]; j ; a [ j ] = temp ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 31 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 32 / 44

O b j e c t S o r t A p p { main ( S t r i n g [ ] a r g s ) { maxsize = 100; ArrayInOb a r r ; a r r = ArrayInOb ( maxsize ) ; a r r. i n s e r t ( Evans, P a t t y, 24) ; a r r. i n s e r t ( Smith, Doc, 59) ; a r r. i n s e r t ( Smith, L o r r a i n e, 37) ; a r r. i n s e r t ( Smith, P a u l, 37) ; a r r. i n s e r t ( Yee, Tom, 43) ; a r r. i n s e r t ( Hashimoto, Sato, 21) ; a r r. i n s e r t ( Stimson, Henry, 29) ; a r r. i n s e r t ( V e l a s q u e z, J o s e, 72) ; System. out. p r i n t l n ( Before s o r t i n g : ) ; a r r. d i s p l a y ( ) ; a r r. i n s e r t i o n S o r t ( ) ; System. out. p r i n t l n ( A f t e r s o r t i n g : ) ; a r r. d i s p l a y ( ) ; Σύγκριση Αλγορίθμων Απλής Ταξινόμησης Η ταξινόμηση φυσαλίδας είναι απλή αλλά είναι χρήσιμη μόνο αν η ποσότητα των προς επεξεργασία δεδομένων είναι μικρή. Η ταξινόμηση επιλογής ελαχιστοποιεί τον αριθμό των αντιμεταθέσεων αλλά ο αριθμός των συγκρίσεων παραμένει υψηλός. Μπορεί να είναι χρήσιμη όταν η ποσότητα των δεδομένων είναι μικρή και η αντιμετάθεση των στοιχείων είναι πολύ χρονοβόρα σε σχέση με τη σύγκρισή τους. Η ταξινόμηση παρεμβολής είναι πιο ευέλικτη και η καλύτερη επιλογή στις περισσότερες περιπτώσεις, αν υποθέσουμε ότι η ποσότητα των δεδομένων είναι μικρή ή τα δεδομένα είναι σχεδόν ταξινομημένα. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 33 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 34 / 44 Ταξινόμηση Συγχώνευσης Παράδειγμα Συγχώνευσης, Δίνονται δύο ταξινομημένοι πίνακες και. Ζητείται αλγόριθμος που δημιουργεί έναν ταξινομημένο πίνακα, που περιέχει τα στοιχεία των και. 1 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 35 / 44

Παράδειγμα Συγχώνευσης Παράδειγμα Συγχώνευσης 1 2 1 2 3 Παράδειγμα Συγχώνευσης Παράδειγμα Συγχώνευσης 1 2 3 4 1 2 3 4 5

Παράδειγμα Συγχώνευσης Παράδειγμα Συγχώνευσης 1 2 3 4 5 6 1 2 3 4 5 6 7 Παράδειγμα Συγχώνευσης Παράδειγμα Συγχώνευσης 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9

Παράδειγμα Συγχώνευσης Αλγόριθμος Συγχώνευσης (Merge) A[ i ] = και B[ j ] =, για i A.length και j B.length αντίστοιχα. 1 2 3 4 5 6 7 8 9 10 Επιστρέφει πίνακα C, με τα στοιχεία των A,B σε αύξουσα σειρά C νέος πίνακας μήκους A.length + B.length; i = 0; j = 0; k = 0,..., (A.length+B.length) 1 { A[ i ] < B[ j ] C[ k ] = A[ i ]; i = i + 1; { C[ k ] = B[ j ]; j = j + 1; C; O(n), για πίνακες A, B το πολύ n στοιχείων. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 37 / 44 Ταξινόμηση Συγχώνευσης (Παράδειγμα) Ταξινόμηση Συγχώνευσης (Παράδειγμα) 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Μετά το 1ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 1): 15 16 13 14 11 12 9 10 7 8 5 6 3 4 1 2 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 38 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 38 / 44

Ταξινόμηση Συγχώνευσης (Παράδειγμα) Ταξινόμηση Συγχώνευσης (Παράδειγμα) 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Μετά το 1ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 1): 15 16 13 14 11 12 9 10 7 8 5 6 3 4 1 2 Μετά το 1ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 1): 15 16 13 14 11 12 9 10 7 8 5 6 3 4 1 2 Μετά το 2ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 2): 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 Μετά το 2ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 2): 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 Μετά το 3ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 4): 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 38 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 38 / 44 Ταξινόμηση Συγχώνευσης (Παράδειγμα) Ταξινόμηση Συγχώνευσης 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Μετά το 1ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 1): 15 16 13 14 11 12 9 10 7 8 5 6 3 4 1 2 Μετά το 2ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 2): 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 Μετά το 3ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 4): 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 Μπορώ να δημιουργήσω n 2 ταξινομημένα ζεύγη στοιχείων του πίνακα. Δηλαδή να ταξινομήσω κάθε ζεύγος, ανεξάρτητα από τα υπόλοιπα: { { { { A[ 0 ], A[ 1 ], A[ 2 ], A[ 3 ], A[ 4 ], A[ 5 ],..., A[ n 2 ], A[ n 1 ] 8 7 6 5 4 3 2 1 = 7 8 5 6 3 4 1 2 n 2 Οι πίνακες ενός στοιχείου εντός κάθε ζεύγους είναι ταξινομημένοι! Μετά το 4ο Βήμα (συγχωνεύσεις υποπινάκων μήκους 8): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Πόσο χρόνο χρειάζομαι για να συγχωνεύσω όλα τα ζευγάρια? O(n) Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 38 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 39 / 44

Ταξινόμηση Συγχώνευσης Ταξινόμηση Συγχώνευσης Από το 1ο βήμα, έχω n 4 ζευγάρια υπο-πινάκων: κάθε πίνακας σε κάθε ζευγάρι έχει ακριβώς 2 στοιχεία στη σωστή σειρά, είναι ταξινομημένος: { [ ] [ ] { [ ] [ ] A 0 1, A 2 3, A 4 5, A 6 7,..., { [ ] [ ]..., A (n 4) (n 3), A (n 2) (n 1) Συγχωνεύσω 2 γειτονικά ζεύγη υπο-πινάκων (2 στοιχείων έκαστος). 7 8 5 6 3 4 1 2 = 5 6 7 8 1 2 3 4 Από το 2ο βήμα, έχω n 8 ζευγάρια υπο-πινάκων: κάθε πίνακας σε κάθε ζευγάρι έχει ακριβώς 4 στοιχεία στη σωστή σειρά, είναι ταξινομημένος: { [ ] [ ] { [ ] [ ] A 0 3, A 4 7, A 8 11, A 12 15,..., { [ ] [ ]..., A (n 6) (n 3), A (n 4) (n 1) Συγχωνεύω 2 γειτονικά ζεύγη υπο-πινάκων (4 στοιχείων έκαστος). 5 6 7 8 1 2 3 4 = 1 2 3 4 5 6 7 8 Πόσο χρόνο χρειάζομαι για να συγχωνεύσω όλα τα n 4 ζεύγη? O(n) Πόσο χρόνο χρειάζομαι για να συγχωνεύσω όλα τα n 8 ζεύγη? O(n) Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 40 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 41 / 44 Πολυπλοκότητα Ταξινόμησης Συγχώνευσης Ταξινόμηση Συγχώνευσης: Λεπτομέρειες Υλοποίησης Κάθε βήμα (συγχωνεύσεις γειτονικών υποπινάκων) σε O(n) χρόνο. Χρειάζεται εκτίμηση του πλήθους των βημάτων. Στο τέλος κάθε βήματος έχει: ζευγών προς συγχώνευση. έχει των ταξινομημένων υπο-πινάκων. Αν ο αλγόριθμος κάνει k βήματα συγχωνεύσεων, στο k-στό βήμα: Μήκος ταξινομημένου υποπίνακα: 2 k = n. Επομένως, k = log n. Αρα η πολυπλοκότητα του αλγορίθμου είναι O(n log n). Είσοδος της είναι ο πίνακας A και το τρέχον μήκος υποπινάκων. Συγχωνεύονται ζεύγη γειτονικών υποπινάκων του τρέχοντος μήκους: μέσα σε έναν νέο, προσωρινό πίνακα, αντιγράφουμε το αποτέλεσμα πίσω στον A, στις θέσεις που καταλάμβαναν οι υποπίνακες κάθε ζεύγους. Ειδική περίπτωση: αν το πλήθος των στοιχείων δεν είναι δύναμη του 2. Ο 2ος υποπίνακας του τελευταίου ζευγαριού έχει ένα στοιχείο λιγότερο ή περισσότερο. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 42 / 44 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 43 / 44

Πολυπλοκότητα Ταξινόμησης Συγχώνευσης Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 44 / 44