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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μέγιστη Ροή Ελάχιστη Τομή

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

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

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

Αλγόριθµοι Ταξινόµησης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

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

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

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

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

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

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

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

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

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

a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1

Αλγόριθµοι Ταξινόµησης

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

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

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

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

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

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

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

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

Tυχαιοποιηµένοι Αλγόριθµοι (CLR, κεφάλαιo 8.3 και 10)

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

ΗΥ240 - Παναγιώτα Φατούρου 2

p

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

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

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

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

Transcript:

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

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

Διαμέριση Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Διαμέριση σε ένα πέρασμα : Σάρωση από αριστερά (με δείκτη i) μέχρι Α[ i ] pivot. Σάρωση από δεξιά (με δείκτη j) μέχρι Α[ j] pivot. 5 6 4 7 Στοιχείο διαχωρισμού : 5 i j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort

Διαμέριση Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Διαμέριση σε ένα πέρασμα : Σάρωση από αριστερά (με δείκτη i) μέχρι Α[ i ] pivot. Σάρωση από δεξιά (με δείκτη j) μέχρι Α[ j] pivot. 5 6 4 7 Στοιχείο διαχωρισμού : 5 i j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 4

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

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

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

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

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

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

Διαμέριση 9 9 5 8 7 4 6 i j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort

Διαμέριση 9 9 5 8 7 4 6 i Στοιχείο διαχωρισμού : j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort

Διαμέριση 9 9 5 8 7 4 6 i Στοιχείο διαχωρισμού : j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort

Διαμέριση 6 9 9 5 8 7 4 i Στοιχείο διαχωρισμού : j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 4

Διαμέριση 6 9 9 5 8 7 4 i Στοιχείο διαχωρισμού : j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 5

Διαμέριση 6 9 5 8 7 4 9 i Στοιχείο διαχωρισμού : j Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 6

Διαμέριση 6 9 5 8 7 4 9 Στοιχείο διαχωρισμού : j i Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 7

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

Διαμέριση partition(int A[], int left, int right) { int pivot = A[left]; i = left ; j = right + ; while () { while (A[++i] < pivot) ; while (A[--j] > pivot) ; if (i < j) swap(a[i], A[j]); else return(j); } } Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 9

Διαμέριση partition(int A[], int left, int right) { int pivot = A[left]; i = left ; j = right + ; while () { while (A[++i] < pivot) ; while (A[--j] > pivot) ; if (i < j) swap(a[i], A[j]); else return(j); } } 0 7 6 9 8 5 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Παράδειγμα Quicksort 5 7 8 6 4 4 4 8 7 6 5 4 5 76 67 8 5 6 7 6 7 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 47

Παράδειγμα Quicksort 5 7 8 6 4 4 4 8 7 6 5 4 5 76 67 8 5 6 7 6 7 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 48

Παράδειγμα Quicksort 5 7 8 6 4 4 4 58 67 76 85 4 5 76 67 8 5 6 7 6 7 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 49

Παράδειγμα Quicksort 5 7 4 85 6 67 48 4 4 85 76 67 58 4 5 76 67 8 5 6 7 6 7 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 50

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

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

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

Χρόνος Εκτέλεσης Καλύτερη περίπτωση : k = n / (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση! Partition «βοηθάει τα μέγιστα»! Aν (περίπου ίδιο μεγέθος) Χειρότερη και καλύτερη περίπτωση εξαιρετικά σπάνιες! Αν τυχαίο στοιχείο pivot, πιθανότητα διαίρεσης (n / 4, n / 4) ή καλύτερης /! 4 5 6 7 8 9 0 4 5 6 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 07) Quicksort 54

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

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

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

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

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

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