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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

p

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

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

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

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

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

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

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

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

1o Φροντιστήριο ΗΥ240

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

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

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

Transcript:

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

Quicksort [Hoare, 62] Στοιχείο διαχωρισµού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Quicksort [Hoare, 62] Στοιχείο διαχωρισµού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς υπο-ακολ. στοιχείο διαχωρισµού. Ταξινόµηση υπο-ακολουθιών αναδροµικά. Ακολουθία ταξινοµηµένη όχι σύνθεση! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

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); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

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

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

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

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

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

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

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

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

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

Διαίρεση Στοιχείο διαχωρισµού : 13 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 3

Διαίρεση Στοιχείο διαχωρισµού : 13 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 3

Διαίρεση Στοιχείο διαχωρισµού : 13 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 3

Διαίρεση Στοιχείο διαχωρισµού : 13 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 3

Διαίρεση Στοιχείο διαχωρισµού : 13 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 3

Διαίρεση Στοιχείο διαχωρισµού : 13 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) 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 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 3

Διαίρεση Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) 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 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) 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 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 4

Ανάλυση Διαχωρισµού Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 5

Ανάλυση Διαχωρισµού Ορθότητα partition : Διατηρεί και επεκτείνει αριστερή περιοχή µε στοιχεία pivot και δεξιά περιοχή µε στοιχεία pivot. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 5

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

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

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

Ανάλυση Διαχωρισµού Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ορθότητα Quicksort Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 8

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

Χρόνος Εκτέλεσης (χ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 9

Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδροµικών αλγ. µε διατύπωση και λύση αναδροµικής εξίσωσης. Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 9

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

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

Χρόνος Εκτέλεσης (χ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 10

Χρόνος Εκτέλεσης (χ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 10

Χρόνος Εκτέλεσης (χ.π.) Χειρότερη περίπτωση : k = 1 ή k = n 1 (σε κάθε κλήση). Ουσιαστικά δεν γίνεται διαίρεση (µόνο αναδιάταξη)! Partition «βοηθάει ελάχιστα» τον αλγόριθµο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 10

Χρόνος Εκτέλεσης (χ.π.) Χειρότερη περίπτωση : k = 1 ή k = n 1 (σε κάθε κλήση). Ουσιαστικά δεν γίνεται διαίρεση (µόνο αναδιάταξη)! Partition «βοηθάει ελάχιστα» τον αλγόριθµο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 10

Χρόνος Εκτέλεσης (χ.π.) Χειρότερη περίπτωση : k = 1 ή k = n 1 (σε κάθε κλήση). Ουσιαστικά δεν γίνεται διαίρεση (µόνο αναδιάταξη)! Partition «βοηθάει ελάχιστα» τον αλγόριθµο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 10

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

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

Χρόνος Εκτέλεσης Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 11

Χρόνος Εκτέλεσης Καλύτερη περίπτωση : k = n / 2 (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση! Partition «βοηθάει τα µέγιστα»! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 11

Χρόνος Εκτέλεσης Καλύτερη περίπτωση : k = n / 2 (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση! Partition «βοηθάει τα µέγιστα»! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 11

Χρόνος Εκτέλεσης Καλύτερη περίπτωση : k = n / 2 (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση! Partition «βοηθάει τα µέγιστα»! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 11

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

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

Χρόνος Εκτέλεσης Καλύτερη περίπτωση : k = n / 2 (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση! Partition «βοηθάει τα µέγιστα»! Aν (περίπου ίδιο µεγέθος) Χειρότερη και καλύτερη περίπτωση εξαιρετικά σπάνιες! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 11

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

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

Πιθανοτική Quicksort Τυχαίο στοιχείο σαν στοιχείο χωρισµού (pivot). Για κάθε, πιθανότητα διαίρεσης (k, n k) = Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) 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); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 12

Χρόνος Εκτέλεσης (µ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 13

Χρόνος Εκτέλεσης (µ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 13

Χρόνος Εκτέλεσης (µ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 13

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

Χρόνος Εκτέλεσης (µ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 14

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

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

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

Πιθανοτικοί Αλγόριθµοι Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 15

Πιθανοτικοί Αλγόριθµοι Ντετερµινιστικοί αλγόριθµοι: Προκαθορισµένη συµπεριφορά για κάθε είσοδο. Υπάρχει χειρότερη περίπτωση και µπορεί να συµβεί. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 15

Πιθανοτικοί Αλγόριθµοι Ντετερµινιστικοί αλγόριθµοι: Προκαθορισµένη συµπεριφορά για κάθε είσοδο. Υπάρχει χειρότερη περίπτωση και µπορεί να συµβεί. Πιθανοτικοί αλγόριθµοι: Συµπεριφορά από είσοδο και τυχαίες επιλογές. Χρήση τυχαιότητας ώστε χειρότερη περίπτωση να συµβαίνει µε πολύ µικρή πιθανότητα. Ποια είναι η χειρότερη περ. για πιθανοτική quicksort; Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 15

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

Σύνοψη Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 16

Σύνοψη Quicksort: Πιθανοτικός αλγόριθµος. Χρόνος χειρότερης περ.: Θ( n2 ) Χρόνος µέσης περίπτωσης: Θ(n log n) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 16

Σύνοψη Quicksort: Πιθανοτικός αλγόριθµος. Χρόνος χειρότερης περ.: Θ( n2 ) Χρόνος µέσης περίπτωσης: Θ(n Χώρος: σχεδόν in-place. log n) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 16

Σύνοψη Quicksort: Πιθανοτικός αλγόριθµος. Χρόνος χειρότερης περ.: Θ( n2 ) Χρόνος µέσης περίπτωσης: Θ(n log n) Χώρος: σχεδόν in-place. Αναδροµή καθυστερεί και απαιτεί µνήµη. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 16

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

Σύνοψη Αλγόριθµος Καλύτερη Μέση Χειρότερη Χώρος 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 MergeS Ω(n log n) Ω(n log n) Ο(n log n) Ο(n log QuickS Ω(n log n) Ο(n n) n) O(n log n) O(1) O(n log n) O(n) O(n 2 )? Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 17