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



Σχετικά έγγραφα
Ταξινόμηση. Σαλτογιάννη Αθανασία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση

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 }

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

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

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

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

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

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

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων

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

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

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

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

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

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

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

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

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

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

Κεφάλαιο : Εισαγωγή Στον Προγραμματισμό. (Διάλεξη 2) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ. Περιεχόμενα

Διδάσκων: Παναγιώτης Ανδρέου

Ταχεία Ταξινόμηση Quick-Sort

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

Αναδρομικοί Αλγόριθμοι

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

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Εισαγωγή στον δομημένο προγραμματισμό

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

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

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

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

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

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

Fast Fourier Transform

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

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

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

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

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

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

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

p

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

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Transcript:

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

3 5 1 Ταξινόμηση - Sorting Πίνακας Α 1 3 5 5 3 1 Ταξινόμηση (Φθίνουσα) Χωρίς Ταξινόμηση Ταξινόμηση (Αύξουσα)

Ταξινόμηση - Sorting Με την ταξινόμηση επιτυγχάνεται γρηγορότερη αναζήτηση στοιχείων σε πίνακες Υπάρχουν πολλοί αλγόριθμοι που ασχολούνται με την ταξινόμηση π.χ - Quick Sort - Insertion Sort - Shell Sort κ.τ.λ Εμείς θα δούμε σήμερα τους αλγόριθμους Bubble Sort & Quick Sort

Ταξινόμηση στοιχείων ενός πίνακα με τη μέθοδο της Φυσαλίδας - Bubble Sort A[1] A[2] A[3] A[] A[5] 12 18 50 2 Περιγραφή: Συγκρίνεται το στοιχείο της πρώτης θέσης με τα στοιχεία των επόμενων θέσεων. Αν είναι μεγαλύτερο ανταλλάζουν στοιχεία. Έτσι η πρώτη θέση θα καταλήξει να έχει το μικρότερο στοιχείο. Αυτό επαναλαμβάνεται με τα υπόλοιπα στοιχεία μέχρις ότου ταξινομηθούν τα δεδομένα όλων των θέσεων.

Bubble Sort A[1] A[2] A[3] A[] A[5] 12 18 50 2 12 2 12 18 50 12 18 temp 18 50 12 Βημα1 A[1] A[1] A[1] A[1] A[2] A[3] A[] A[5] IF A[1]>A[2] THEN BEGIN Βημα2 temp:=a[1]; Βημα3 A[2] A[3] A[1]:=A[2]; A[3] A[2] A[] A[2]:=temp; A[2] A[5] A[3] END; A[] A[5] Βημα A[] A[5]

Bubble Sort Καταληκτικά Ο αλγόριθμος αυτός είναι εύκολο να υλοποιηθεί, όμως για πίνακες με πολλά στοιχεία είναι πάρα πολύ αργός. Μια πολύ πιο γρήγορη ταξινόμηση προσφέρει ο αλγόριθμος Quick Sort ο οποίος είναι και η πιο συνηθισμένη μέθοδος ταξινόμησης. Ανήκει στην κατηγορία αλγορίθμων που λέγονται "Διαίρει και Βασίλευε", οι οποίοι μοιράζουν το πρόβλημα σε μικρότερα ανεξάρτητα υποπροβλήματα και τα λύνουν αναδρομικά.

Quick Sort Αλγόριθμος διάλεξε ένα κλειδί του πίνακα a[0..n 1] το οποίο θα είναι το στοιχείο διαμέρισης (pivot). Συνήθως επιλέγεται το στοιχείο το οποίο είναι κοντά στον μέσο όρο του μικρότερου και μεγαλύτερου στοιχείου στον πίνακα. έπειτα αναδιατάσσουμε τα στοιχεία του πίνακα a έτσι ώστε όλα τα κλειδιά που είναι μικρότερα του στοιχείου διαμέρισης να είναι στα αριστερά του και όλα τα μεγαλύτερα κλειδιά στα δεξιά του έπειτα ταξινομούμε αναδρομικά το αριστερό και το δεξιό μέρος του πίνακα

Quick Sort Αλλάζω τις τιμές του pivot με Up & Down ανάλογα με την θέση του Pivot και τις τιμές των Up & Down. Εδώ θα αλλαχθεί με το Down 12 5 33 23 3 55 12 12 55 33 5 Pivot First Up Up Down Last Βήματα Ορίζουμε το στοιχείο διαμερισμού ( Pivot) Down Προχωρώ στην πρώτη θέση από τα αριστερά που είναι μεγαλύτερη του pivot (up) και στην πρώτη θέση του πίνακα από δεξιά που είναι μικρότερη του pivot (down) Ελέγχω τις θέσεις up & down. Εάν το down είναι μικρότερο από το up τότε τις αλλάζω. Μετακινώ το Up προς τα δεξιά στη θέση που είναι >pivot και το Down προς τα αριστερά στην θέση < pivot. Επαναλαμβάνω τα πιο πάνω βήματα μέχρι οι δείκτες up & down να διασταυρωθούν

Quick Sort Pivot1 Pivot Pivot2 12 33 23 3 55 5 First1 Last1 First2 Last2 Παρατηρούμε ότι αριστερά του pivot οι αριθμοί είναι μικρότεροι του ενώ στα δεξιά είναι μεγαλύτεροι. Έχουν δηλαδή δημιουργηθεί δυο υποπίνακες στους οποίους θα ακολουθήσουμε τα ίδια βήματα για να μέχρι ο πίνακας να ταξινομηθεί. Ο αλγόριθμος είναι αναδρομικός και θα επαναλαμβάνεται εφόσον το First είναι μεγαλύτερο Last.

Παράδειγμα1 Να γίνει ταξινόμηση του πιο κάτω πίνακα σε αύξουσα σειρά χρησιμοποιώντας τους αλγόριθμους Bubble & Quick sort. Να δείξετε όλα τα βήματα. 20

Παράδειγμα 1 με Bubble Sort 20 Ελέγχουμε την κάθε θέση του πίνακα με τις υπόλοιπες Βήμα 1 >20 ΟΧΙ > ΝΑΙ ΑΛΛΑΓΗ > > ΟΧΙ ΟΧΙ ΤΕΛΟΣ ΓΙΑ ΘΕΣΗ 1 Βήμα 2 20 20 20 20> ΝΑΙ ΑΛΛΑΓΗ 20 > ΟΧΙ > ΟΧΙ ξεκινώντας από τα αριστερά. 20 ΤΕΛΟΣ ΓΙΑ ΘΕΣΗ 2 Βήμα 3 20 20> ΝΑΙ ΑΛΛΑΓΗ 20 > ΟΧΙ 20 ΤΕΛΟΣ ΓΙΑ ΘΕΣΗ 3 Βήμα 20> ΝΑΙ 20 ΑΛΛΑΓΗ 20 ΤΕΛΟΣ Πίνακας Ταξινομημένος

First Πίνακας Α Παράδειγμα 1 με Quick Sort 20 1. Ορίζουμε το Pivot= First F1 Πίν. Α1 F1 up down Last 20 up down down L1 Last Πίν. Α2 20 up F3 L3 F3=L3 up down L1 F L F=L F2 L2 F2=L2 2. Ορίζουμε σαν up τον πρώτο αριθμό μεγαλύτερο του Pivot στα αριστερά και Down τον μικρότερο του Pivot από δεξιά 3. Ελέγχουμε εάν το up >down τότε τα ανταλλάζω.. Επαναλαμβάνω το βήμα 2. Παρατηρώ ότι τα up & down έχουν διασταυρωθεί. Το Pivot θα ανταλλαχθεί με το Up 5. Έχουν δημιουργηθεί 2 υποπίνακες. Πίν. Α1 και Πιν. Α2.. Επαναλαμβάνουμε τα βήματα 1,2,3, για τον υποπίνακα Α1. Ο Πιν. Α2 δεν χρειάζεται γιατί εχει μόνο ένα στοιχείο. Για Πίν. Α1 το Pivot=. 20 Ο Πίνακας είναι ταξινομημένος

Ανακεφαλαίωση Ο αλγόριθμος Bubble Sort είναι πιο έυκολος στην υλοποίηση αλλά αργός ενώ ο Quick Sort δύσκολος στην υλοποίηση αλλά πολύ πιο γρήγορος για μεγάλους πίνακες. Στα παραδείγματα εφαρμόσαμε ταξινόμηση σε αύξουσα σειρά. Για να εφαρμόσουμε ταξινόμηση σε φθίνουσα σειρά αλλάζουμε τον έλεγχο που γίνετε στις θέσεις κάθε φορά από μεγαλύτερο σε μικρότερο δηλαδή να γίνετε αλλαγή στο Bubble Sort εάν Α[1] < Α[2] και στο Quick Sort να γίνετε αλλαγή εάν η θέση up < down.