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

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

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

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

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

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

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

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

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

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

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

Ουρά Προτεραιότητας: Heap

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

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

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

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

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

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

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

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

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

Ασυμπτωτικός Συμβολισμός

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

Συντομότερες ιαδρομές

Ουρά Προτεραιότητας: Heap

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

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

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

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

Συντομότερες ιαδρομές

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Συντομότερα Μονοπάτια για Όλα τα Ζεύγη Κορυφών

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

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

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

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

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

Αναζήτηση Κατά Πλάτος

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

Ουρά Προτεραιότητας: Heap

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

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

Ουρά Προτεραιότητας: Heap

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

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

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Ελάχιστο Συνδετικό έντρο

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

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

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

ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ. ΕΝΟΤΗΤΑ: Γραμμικές Συναρτήσεις Διάκρισης. ΔΙΔΑΣΚΟΝΤΕΣ: Βλάμος Π. Αυλωνίτης Μ. ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Υπολογιστική Πολυπλοκότητα

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

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

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

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ

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

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

Θεωρία Πιθανοτήτων & Στατιστική

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

υναμικός Προγραμματισμός

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

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

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

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

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

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

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

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

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

Στατιστική Επιχειρήσεων

Υδραυλικά & Πνευματικά ΣΑΕ

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Δομημένος Προγραμματισμός

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

Transcript:

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

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

Quicksort [Hoare, 62] Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής υπο-ακολ. στοιχείο διαχωρισμού. Στοιχεία δεξιάς υπο-ακολ. στοιχείο διαχωρισμού. Ταξινόμηση υπο-ακολουθιών αναδρομικά. Ακολουθία ταξινομημένη όχι σύνθεση! quicksort(int A[], int left, int right) { if (left >= right) return; // At most 1 element q = partition(a, left, right); quicksort(a, left, q); quicksort(a, q+1, right); } Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 2

ιαίρεση Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, ιαίρεση σε ένα πέρασμα : Σάρωση από αριστερά (με δείκτη i) μέχρι Α[i] pivot. Σάρωση από δεξιά (με δείκτη j) μέχρι Α[j] pivot. Αν δεν έχουν εξεταστεί όλα τα στοιχεία (i < j): αντιμετάθεση(α[i], Α[j]) και συνέχεια. Αν έχουν εξεταστεί όλα: επιστροφή ορίου διαχωρισμού (δείκτη j). i j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 3

ιαίρεση partition(int A[], int left, int right) { int pivot = A[left]; i = left 1; j = right + 1; while (1) { while (A[++i] < pivot) ; while (A[--j] > pivot) ; if (i < j) swap(a[i], A[j]); else return(j); } } Στοιχείο διαχωρισμού : 13 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 4

ιαίρεση partition(int A[], int left, int right) { int pivot = A[left]; i = left 1; j = right + 1; while (1) { while (A[++i] < pivot) ; while (A[--j] > pivot) ; if (i < j) swap(a[i], A[j]); else return(j); } } Στοιχείο διαχωρισμού : 10 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 5

Ανάλυση ιαχωρισμού Ορθότητα partition : ιατηρεί και επεκτείνει αριστερή περιοχή με στοιχεία pivot και δεξιά περιοχή με στοιχεία pivot. A[i] pivot : επέκταση αριστερής περιοχής σταματά. A[j] pivot : επέκταση δεξιάς περιοχής σταματά. Ξένες περιοχές : αντιμετάθεση στοιχείων και συνέχεια. Επικάλυψη : ολοκλήρωση διαίρεσης. Τελικά τα στοιχεία αριστερά pivot και τα στοιχεία δεξιά pivot, όπως απαιτείται. Κάθε περιοχή 1 στοιχείο. Quicksort τερματίζει. (1 σημείο διαχωρισμού n 1) Απαραίτητα: i και j σταματούν στο pivot. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 6

Ανάλυση ιαχωρισμού Χρόνος εκτέλεσης partition : Κάθε στοιχείο συγκρίνεται με pivot μία φορά (εκτός από στοιχεία εκατέρωθεν σημείου χωρισμού). Τελικά i και j «δείχνουν» είτε γειτονικές είτε ίδια θέση γιατί όπου πέρασε το i δεν συνεχίζει j. Χρόνος εκτέλεσης partition για n στοιχεία = Θ(n). Μετά τον διαχωρισμό, στοιχεία δεν αλλάζουν «πλευρά» (δηλ. αριστερά μένουν αριστερά, δεξιά μένουν δεξιά). Υπάρχουν πολλές άλλες μορφές διαίρεσης, π.χ. pivot παίρνει τελική του θέση στον πίνακα, διαίρεση στα τρία, Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 7

Παράδειγμα Quicksort Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 8

Ορθότητα Quicksort Συνέπεια ορθότητας partition : Τερματισμός : μέγεθος υπο-ακολουθιών n 1. Ταξινόμηση : Αριστερά στοιχεία pivot δεξιά στοιχεία. Επαγωγικά, αριστερή περιοχή και δεξιά περιοχή ταξινομημένες. Συνολικά, πίνακας ταξινομημένος. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 9

Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδρομικών αλγ. με διατύπωση και λύση αναδρομικής εξίσωσης. Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n) Τ(n) : χρόνος (χ.π.) για ταξινόμηση n στοιχείων. Θ(n) : αναδιάταξη και διαίρεση εισόδου. T(k) : ταξινόμηση αριστερού τμήματος (k στοιχεία). T(n k) : ταξινόμηση δεξιού τμήματος (n k στοιχεία). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 10

Χρόνος Εκτέλεσης (χ.π.) Χειρότερη περίπτωση : k = 1 ή k = n 1(σε κάθε κλήση). Ουσιαστικά δεν γίνεται διαίρεση (μόνο αναδιάταξη)! Partition «βοηθάει ελάχιστα» τον αλγόριθμο. Στιγμιότυπα που quicksort χρειάζεται χρόνο Ω(n 2 ); Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 11

Χρόνος Εκτέλεσης Καλύτερη περίπτωση : k = n / 2 (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση! Partition «βοηθάει τα μέγιστα»! Aν (περίπου ίδιο μεγέθος) Χειρότερη και καλύτερη περίπτωση σπάνιες! Αν τυχαίο στοιχείο pivot, πιθανότητα διαίρεσης (n /4, 3n /4)ήκαλύτερης 1/2! Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 12

Πιθανοτική Quicksort Τυχαίο στοιχείο σαν στοιχείο χωρισμού (pivot). Για κάθε, πιθανότητα διαίρεσης (k, n k) = randomquicksort(int A[], int left, int right) { if (left >= right) return; // At most 1 element pivot = random(left, right); swap(a[left], A[pivot]); q = partition(a, left, right); randomquicksort(a, left, q); randomquicksort(a, q+1, right); } Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 13

Χρόνος Εκτέλεσης (μ.π.) Λύση αναδρομής : Αυτός ο χρόνος εκτέλεσης με μεγάλη πιθανότητα! Πιθανότητα διαίρεσης (n /4, 3n /4)ήκαλύτερης 1/2! Κατά «μέσο όρο», κάθε 2 επίπεδα στο δέντρο της αναδρομής, έχουμε «επιτυχημένη» διαίρεση. Σε κάθε επίπεδο, συνολικός χρόνος διαίρεσης Θ(n). Θ(n log n) από «επιτυχημένες» διαιρέσεις + Θ(n log n) από «αποτυχημένες» διαιρέσεις. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 14

Χρόνος Εκτέλεσης (μ.π.) Πιθανότητα «αποτυχημένες» διαιρέσεις > c log n είναι εξαιρετικά μικρή! Χρόνος εκτέλεσης Θ(n log n) με μεγάλη πιθανότητα! Μέση περίπτωση δεν εξαρτάται από είσοδο! Αφορά στη συμπεριφορά του αλγόριθμου. Εξαιρετικά μικρή πιθανότητα χειρότερης περίπτωσης. Ανάλυση χειρότερης περίπτωσης δεν έχει νόημα! Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 15

Πιθανοτικοί Αλγόριθμοι Ντετερμινιστικοί αλγόριθμοι: Προκαθορισμένη συμπεριφορά για κάθε είσοδο. Υπάρχει χειρότερη περίπτωση και μπορεί να συμβεί. Πιθανοτικοί αλγόριθμοι: Συμπεριφορά από είσοδο και τυχαίες επιλογές. Χρήση τυχαιότητας ώστε χειρότερη περίπτωση να συμβαίνει με πολύ μικρή πιθανότητα. Ποια είναι η χειρότερη περ. για πιθανοτική quicksort; Χρόνος (απόδοση) κατά μέση τιμή. Ορθότητα με μεγάλη πιθανότητα. Las-Vegas: αποτέλεσμα σωστό, χρόνος τυχαία μετ/τη. Monte-Carlo: χρόνος προκαθορισμένος, μπορεί λάθος αποτέλεσμα (αλλά με πολύ μικρή πιθανότητα). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 16

Σύνοψη Γρήγορη ταξινόμηση (quicksort): Πιθανοτικός αλγόριθμος. Χρόνος χειρότερης περ.: Θ( n 2 ) Χρόνος μέσης περίπτωσης: Θ(n log n) Χώρος: σχεδόν in-place. Αναδρομή καθυστερεί και απαιτεί μνήμη. Εύκολη και γρήγορη υλοποίηση. Γρηγορότερος αλγόριθμος στην πράξη (για n 30). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 17

Σύνοψη Αλγόριθμος Καλύτερη Μέση Χειρότερη Χώρος BubbleS Ω(n) O(n 2 ) O(n 2 ) O(1) InsertionS Ω(n) O(n 2 ) O(n 2 ) O(1) SelectionS Ω(n) O(n 2 ) O(n 2 ) O(1) HeapS Ω(n log n) Ο(n log n) O(n log n) O(1) MergeS Ω(n log n) Ο(n log n) O(n log n) O(n) QuickS Ω(n log n) Ο(n log n) O(n 2 )? Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Quicksort 18

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.