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

Σχετικά έγγραφα
ΗΥ-150. Ταξινόµηση και Αναζήτηση

ΗΥ-150 Πξνγξακκατησκόο Ταμηλόκεσε θαη Αλαδήτεσε

ΗΥ-150. Προγραμματισμός

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

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

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

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

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

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

Εργαστήριο 2: Πίνακες

Ταξινόµηση και Αναζήτηση

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

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

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

ΗΥ-150. Προγραμματισμός

Αναζήτηση και ταξινόμηση

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

Προγραμματισμός Αναδρομή

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

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Προγραµµατισµός. Αναδροµή (1/2)

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

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

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

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

Προγραμματισμός Αναδρομή

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

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

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

Αλγόριθμοι και Δομές Δεδομένων(Θ) Ευάγγελος Γ. Ούτσιος

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

p

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

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

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

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

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

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

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

Δομές Δεδομένων Ενότητα 2

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

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

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

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

i : 0<=i<N-1 => data[i] <= data[i+1] 25/10/2009

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

4.1 Αναζήτηση. Εισαγωγή στη C++

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

Σημειώσεις δεύτερης εβδομάδας

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

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

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

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

Διάλεξη 15η: Αναδρομή, μέρος 1ο

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

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

Κεφάλαιο 8.6. Πίνακες ΙI (Διάλεξη 17)

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

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

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

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

242 -ΕισαγωγήστουςΗ/Υ

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

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

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

Αλγόριθμοι Αναζήτησης. (AeppAcademy.com)

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Transcript:

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 1 / 10

Το πρόβλημα της Αναζήτησης Έστω ο πίνακας A που περιέχει δεδομένα Ψάχνω να βρω ένα συγκεκριμένο στοιχείο (key) στον πίνακα Αν ο πίνακας δεν είναι ταξινομημένος Γραμμική αναζήτηση Η απλούστερη δυνατή Συγκρίνει σειριακά κάθε στοιχείο του πίνακα με την τιμή του key Χρήσιμο για μικρούς και όχι ταξινομημένους πίνακες power1c int linear_search(int A[], int from, int to, int key) { int i; for(i = from; i <= to; i++) { if(a[i] == key) { return i; return -1; Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 2 / 10

Το πρόβλημα της Αναζήτησης (2) Αν ο πίνακας είναι ταξινομημένος Πχ, τηλεφωνικός κατάλογος Η αναζήτηση γίνεται πολύ πιο γρήγορα Δυαδική αναζήτηση (binary search) Συγκρίνει το A[middle] στοιχείο με το ζητούμενο key Αν είναι ίσα βρέθηκε η ζητούμενη θέση Αν key < A[middle], ψάχνει το πρώτο μισό του πίνακα Αν key > A[middle], ψάχνει το δεύτερο μισό του πίνακα Αναδρομική επανάληψη της αναζήτησης Η δυαδική αναζήτηση είναι πολύ γρήγορη Στη χειρότερη περίπτωση χρειάζεται log 2 (N) βήματα, όπου N ο αριθμός των στοιχείων του πίνακα Για πίνακα 100 στοιχείων, χρειάζονται το πολύ 7 βήματα Για πίνακα 100000 στοιχείων, χρειάζονται το πολύ 20 βήματα Για πίνακα 100000000 στοιχείων, χρειάζονται το πολύ 27 βήματα Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 3 / 10

Δυαδική αναζήτηση με επανάληψη search1c int binary_loop_search(int a[], int key, int low, int high) { int middle; while(low <= high) { middle = (low + high) / 2; if(key == a[middle]) { return middle; else if(key < a[middle]) { high = middle -1; else { low = middle + 1; return -1; Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 4 / 10

Δυαδική αναζήτηση με αναδρομή search2c int binary_search(int a[], int key, int low, int high) { int middle; middle = (low + high) / 2; if(high < low) { return -1; if(key == a[middle]) { return middle; else if(key < a[middle]) { return binary_search(p, key, low, middle -1); else { return binary_search(p, key, middle + 1, high); Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 5 / 10

Το πρόβλημα της Ταξινόμησης Έστω ο πίνακας A που περιέχει δεδομένα Το πρόβλημα είναι να γίνει αναδιάταξη των στοιχείων ώστε να βρεθούν σε αύξουσα (ή φθίνουσα) σειρά, δηλαδή ταξινομημένα 12 31 4 32 134 13 42 1 43 2 1 2 4 12 13 31 32 42 43 134 Λύση: Υπάρχουν διάφοροι αλγόριθμοι που το πετυχαίνουν με διαφορετικούς τρόπους και υπολογιστικό κόστος Straight Selection Sort, Bubble Sort: O(N 2 ) Quick Sort: O(N log N) Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 6 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 3 1 4 1 2 4 5 5 6 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 3 1 4 1 2 4 5 5 6 9 3 1 4 1 2 4 5 5 6 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 3 1 4 1 2 4 5 5 6 9 3 1 4 1 2 4 5 5 6 9 3 1 2 1 4 4 5 5 6 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 3 1 4 1 2 4 5 5 6 9 3 1 4 1 2 4 5 5 6 9 3 1 2 1 4 4 5 5 6 9 1 1 2 3 4 4 5 5 6 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 3 1 4 1 2 4 5 5 6 9 3 1 4 1 2 4 5 5 6 9 3 1 2 1 4 4 5 5 6 9 1 1 2 3 4 4 5 5 6 9 1 1 2 3 4 4 5 5 6 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Δυαδική ταξινόμηση με αναδρομή 3 1 4 1 5 9 2 6 5 4 3 1 4 1 5 4 2 6 5 9 3 1 4 1 2 4 5 5 6 9 3 1 4 1 2 4 5 5 6 9 3 1 2 1 4 4 5 5 6 9 1 1 2 3 4 4 5 5 6 9 1 1 2 3 4 4 5 5 6 9 1 1 2 3 4 4 5 5 6 9 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 7 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα [0] 36 [1] [2] [3] [4] 24 10 6 12 Αταξινόμητο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις [0] 36 [1] [2] [3] [4] 24 10 6 12 Αταξινόμητο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις [0] [1] [2] [3] [4] 12 24 10 6 36 Αταξινόμητο Ταξινομημένο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις +3 συγκρίσεις [0] [1] [2] [3] [4] 12 24 10 6 36 Αταξινόμητο Ταξινομημένο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις +3 συγκρίσεις [0] [1] [2] [3] [4] 12 6 10 24 36 Αταξινόμητο Ταξινομημένο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις +3 συγκρίσεις +2 συγκρίσεις [0] [1] [2] [3] [4] 12 6 10 24 36 Αταξινόμητο Ταξινομημένο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις +3 συγκρίσεις +2 συγκρίσεις [0] [1] [2] [3] 10 6 12 24 [4] 36 Αταξινόμητο Ταξινομημένο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις +3 συγκρίσεις +2 συγκρίσεις +1 σύγκριση [0] [1] [2] [3] 10 6 12 24 [4] 36 Αταξινόμητο Ταξινομημένο Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις [0] 6 +3 συγκρίσεις +2 συγκρίσεις [1] [2] 10 12 Ταξινομημένο +1 σύγκριση [3] 24 [4] 36 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις +3 συγκρίσεις +2 συγκρίσεις +1 σύγκριση [0] [1] [2] [3] 6 10 12 24 [4] 36 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με επιλογή Χωρίζει νοητά τον πίνακα σε 2 μέρη Ταξινομημένο Αταξινόμητο Σε κάθε επανάληψη βρίσκει το μεγαλύτερο στοιχείο και το ανταλλάσει με το πρώτο στοιχείο του αταξινόμητου υποπίνακα 4 συγκρίσεις +3 συγκρίσεις +2 συγκρίσεις +1 σύγκριση [0] [1] [2] [3] 6 10 12 24 10 συγκρίσεις [4] 36 Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 8 / 10

Ταξινόμηση με Επιλογή selection-sortc void selectionsort(int arr[], int n) { int i, j, minindex, tmp; for (i = 0; i < n - 1; i++) { minindex = i; for (j = i + 1; j < n; j++) { if (arr[j] < arr[minindex]) { minindex = j; if (minindex!= i) { tmp = arr[i]; arr[i] = arr[minindex]; arr[minindex] = tmp; Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 9 / 10

Ταξινόμηση quicksort qsortc void qsort(int v[], int left, int right) { int i, last; if( left >= right) { return; swap(&v[left], &v[(left + right)/2]); last = left; for (i = left+1; i <= right; i++) { if (v[i] < v[left]) { swap(&v[++last], &v[i]); swap(&v[left], &v[last]); qsort(v, left, last-1); qsort(v, last+1, right); Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 10 / 10