Γηάιεμε 15: Αιγόξηζκνη Ταμηλόκεζεο

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

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

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

Δηάιεμε 13: Αιγόξηζκνη Ταμηλόκεζεο

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

ηδάζθσλ: εµήηξεο Εετλαιηπνύξ

Ππογπαμμαηιζμόρ Ι (ΗΥ120)

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

Ανάπηςξη Δθαπμογών ζε Ππογπαμμαηιζηικό Πεπιβάλλον

Γηάιεμε 14: Αιγόξηζκνη Ταμηλόκεζεο

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

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

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

1 Είζοδορ ζηο Σύζηημα ΣΔΕΔ ή BPMS

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

ΓΗΜΟΙΑ ΟΙΚΟΝΟΜΙΚΗ ΣΟΜΟ Γ

Constructors and Destructors in C++

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

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

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

Δσζμενές διαηαρατές και Ονομαζηικό-πραγμαηικό επιηόκιο

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

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

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

EL Eνωμένη στην πολυμορυία EL A8-0046/319. Τροπολογία

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

ΓΙΑΙΡΔΣΟΣΗΣΑ. Οπιζμόρ 1: Έζηω d,n. Λέκε όηη ν d δηαηξεί ηνλ n (ζπκβνιηζκόο: dn) αλ. ππάξρεη c ηέηνην ώζηε n. Θεώπημα 2: Γηα d,n,m,α,b ηζρύνπλ:

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

ΕΙΑΓΩΓΗ ΣΗ ΘΕΩΡΙΑ ΗΜΑΣΩΝ & ΤΣΗΜΑΣΩΝ. ΜΕΣΑΥΗΜΑΣΙΜΟ Laplace

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

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

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

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

ΑΣΚΛΗΠΙΟΣ ΚΑΠ , 14 ΜΑΙΟΥ, 2017 ΛΑΓΚΑΔΑΣ, ΘΕΣΣΑΛΟΝΙΚΗΣ

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε. Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο

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

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

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

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

Άσκηση 1 - Μοπυοποίηση Κειμένου

Ηλεκηπονικά Απσεία και Διεπαθέρ

Έωρ και 28% η αύξηζη ηων ειζθοπών από ηο 2019!

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Διάρηζηα Δπηθαιύπηνληα Γέλδξα

Δηάιεμε 10: Λίζηεο Υινπνίεζε & Εθαξκνγέο

ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΣΗΜΑΤΩΝ & ΣΥΣΤΗΜΑΤΩΝ. ΜΕΤΑΣΦΗΜΑΤΙΣΜΟΣ Laplace

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

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

ΑΣΚΗΣΔΙΣ ΦΥΣΙΚΗΣ ΚΑΤΑΣΤΑΣΗΣ ΣΤΟ ΓΗΠΔΓΟ

(άρθρο 8 Ν.1599/1986)

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

Κάζε functional unit ρξεζηκνπνηείηαη κηα θνξά ζε θάζε θύθιν: αλάγθε γηα πνιιαπιό hardware = θόζηνο πινπνίεζεο!

Κόληξα πιαθέ ζαιάζζεο κε δηαζηάζεηο 40Υ40 εθ. Καξθηά 3 θηιά πεξίπνπ κε κήθνο ηξηπιάζην από ην πάρνο ηνπ μύινπ θπξί κεγάιν θαη ππνκνλή

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

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

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Αντισταθμιστική ανάλυση

ΜΑΘΗΜΑΤΙΚΑ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΦΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ Β ΛΥΚΔΙΟΥ ΤΔΣΤ(1) ΣΤΑ ΓΙΑΝΥΣΜΑΤΑ

66. Ομογενής ράβδος ποσ περιζηρέθεηαι

Τ ξ ε ύ ο ξ π ς ξ σ ξ ο ί ξ σ _ Ι ε ο α μ ε ι κ ό π

Α Καθοπιζμόρ απμοδιοηήηυν - 1 επικεθαλήρ 1. Γ Αςηοτία ζηη ζήπαγγα Β 1 επικεθαλήρ εξ. ζηελεσορ. Ε Ποζοηική ανάλςζη Γ 3 εξ.

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

γηα ηνλ Άξε Κσλζηαληηλίδε

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots)

Transcript:

Γηάιεμε 15: Αιγόξηζκνη Ταμηλόκεζεο Σηελ ελόηεηα απηή ζα κειεηεζνύλ ηα εμήο επηκέξνπο ζέκαηα: Ο αλγόπιθμορ «Γπήγοπηρ Ταξινόμησηρ» - QuickSort Έμμεση Ταξινόμηση Εξωτεπική Ταξινόμηση ηδάζθωλ: εµήηξεο Εεϊλαιηπνύξ 15-1

Γπήγοπη Ταμηλόκεζε (QuickSort) Ζ γπήγοπη ηαξινόμηζη (QuickSort) είλαη, όπωο ν Mergesort, δηαδηθαζία διαίπει και βαζίλευε (divide and conquer, δει. αλαδξνκηθή δηαδηθαζία όπνπ ην πξόβιεκα κνηξάδεηαη ζε κέξε ηα νπνία ιύλνληαη μερωξηζηά, θαη κεηά νη ιύζεηο ζπλδπάδνληαη.). Γελ ρξεηάδεηαη βνεζεηηθό πίλαθα (όπωο ζηελ Mergesort) Πξαθηηθά, ν πηo γξήγνξνο αιγόξηζκνο. Σηε ρείξηζηε πεξίπηωζε ν αιγόξηζκνο Quick Sort είλαη Ο(n²) αιιά ζηελ θαιύηεξε πεξίπηωζε ρξεηάδεηαη Ω(nlogn): Τα πεξηζζόηεξα ζπζηήκαηα ρξεζηκνπνηνύλ ην Quick Sort (π.ρ. Unix) θαη νη πεξηζζόηεξεο γιώζζεο πξνγξακκαηηζκνύ ην πξνζθέξνπλ ζαλ κέξνο ηωλ βαζηθώλ βηβιηνζεθώλ ηνπο πρ. C, JAVA, C++, etc. 15-2

Πεξηγξαθή ηνπ Quick Sort Aλ ην δεδνκέλν εηζόδνπ πεξηέρεη 0 ή 1 ζηνηρεία δελ θάλνπκε ηίπνηα. Γηαθνξεηηθά, αλαδξνκηθά: 1. δηαιέγνπκε έλα ζηνηρείν p (αθόκα δελ νξίδνπκε πην αθξηβώο), ην νπνίν νλνκάδνπκε ην άξον (pivot) ζηνηρείν θαη ην αθαηξνύκε από ην δεδνκέλν εηζόδνπ. 2. ρωξίδνπκε ηνλ πίλαθα ζε δύν κέξε S1 θαη S2, όπνπ ην S1 ζα πεξηέρεη όια ηα ζηνηρεία ηνπ πίλαθα πνπ είλαη κηθξόηεξα από ην p, θαη ην S2 ζα πεξηέρεη ηα ππόινηπα ζηνηρεία (όια ηα ζηνηρεία πνπ είλαη κεγαιύηεξα από ην p). 3. Καινύκε αλαδξνκηθά ηνλ αιγόξηζκν ζην S1, θαη παίξλνπκε απάληεζε ην Τ1, θαη ζην S2, θαη παίξλνπκε απάληεζε ην Τ2. 4. Δπηζηξέθνπκε ηνλ πίλαθα [Τ1, p, T2]. 15-3

Βαζηθή Ηδέα ηνπ QuickSort [72, 12, 1, 34, 3, 50, 28, 6, 5, 22, 91, 73] ρωξίδνπκε κε pivot ην 28 (κπνξνύζε λα είλαη νπνηνδήπνηε άιιν ζηνηρείν) Θέηνπκε αξηζηεξά ηνπ pivot ηα κηθξόηεξα θαη δεμηά ηα κεγαιύηεξα ηνπ [12, 1, 3, 6, 5, 22] 28 [72,34,50,91,73] Quicksort Quicksort 1, 3, 5, 6, 12, 22 34, 50, 72, 73, 91 Αποηέλεζμα: 1, 3, 5, 6, 12, 22, 28, 34, 50, 72, 73, 91 15-4

Ψεπδνθώδηθαο QuickSort void Quicksort(int A[], int l, int r){ if (l>=r) return; int pivotindex = (l+r)/2; int pivot = A[pivotIndex]; // κάνουμε swap ηον pivot με ηο ηελευηαίο. swap(a, pivotindex, r); Δδώ δηαιέμακε ηνλ κεζαίν. Θα κπνξνύζακε λα είρακε δηαιέμεη νπνηνλδήπνηε άιιν /* H διαδικαζία partition χωρίζει ηον πίνακα Α[l r-1] έηζι ώζηε Α[l..k-1] να περιέχει ζηοιχεία < pivot, A[k r-1] να περιέχει ζηοιχεία >=pivot, και επιζηρέθει ηην ηιμή k. */ int k = partition (A, l, r-1, pivot); } // κάνουμε swap ηον k με ηο ηελευηαίο. swap(a, k, r); Quicksort(A, l, k-1); QuickSort(A, k+1, r); A 44 8 56 11 9 30 10 l r-1 r pivot 15-5

Γηαδηθαζία Partition(A, l, r, p) Με δεδνκέλν εηζόδνπ ηνλ πίλαθα Α[l r], θαη pivot p, ζέινπκε λα ρωξίζνπκε ηνλ πίλαθα ζε δύν κέξε ωο πξνο ην p. To πην πάλω πξέπεη λα επηηεπρζεί σωπίρ ηε ρξήζε δεύηεξνπ πίλαθα (ην sorting ζα γίλεη επί ηόπνπ). Βαζηθή Ηδέα: 1. Δπαλαιακβάλνπκε ηα εμήο κέρξηο όηνπ ηα l θαη r λα δηαζηαπξωζνύλ. 2. Πξνρώξα ην r πξνο ηα απιζηεπά όζν ηα ζηνηρεία πνπ βξίζθεηο είλαη κεγαιύηεξα (ή ίζα) ηνπ p, 3. Πξνρώξα ην l πξνο ηα δεξιά όζν ηα ζηνηρεία πνπ βξίζθεηο είλαη κηθξόηεξα ηνπ p, 4. αληάιιαμε ηα ζηνηρεία πνπ δείρλνληαη από ηα l θαη r. A 44 8 56 11 9 30 10 l r-1 r pivot 15-6

index Γεδνκέλν Δηζόδνπ: Παξάδεηγκα Δθηέιεζεο Partition 0 1 2 3 4 5 6 7 72 6 37 48 30 42 83 75 pivot = 48, κεηαθίλεζε ηνπ pivot ζην ηέινο (swap(4, 8)): 72 6 37 75 30 42 83 48 l εθηέιεζε ηνπ Partition(A, l, r, 48): r pivot 72 6 37 75 30 42 83 48 l r 42 6 37 75 30 72 83 48 l r 42 6 37 30 75 72 83 48 l r 42 6 37 30 75 72 83 48 r l 15-7

Ο Αιγόξηζκνο Quicksort ζηελ C void quicksort(int A[], int l, int r) { int pivot, pivotindex; if (l>=r) return; // Επιλογή ηος καηάλληλος pivot pivotindex = (l+r)/2; pivot = A[pivotIndex]; A 44 8 56 11 9 30 10 l r-1 r pivot // Μεηακίνηζη ηος pivot ζηο ηέλορ ηηρ λίζηαρ swap(a, pivotindex, r); /* Κλήζη ηηρ ζςνάπηηζηρ partition (η οποία ηοποθεηεί απιζηεπά, δεξιά ηα μικπόηεπα και μεγαλύηεπα ζηοισεία ανηίζηοισα. */ pivotindex = partition(a, l, r-1, pivot); // Τοποθέηηζη ηου pivot πίζω ζηην αρχική ηου θέζη if (A[r] < Α[pivotIndex]) swap(a, pivotindex, r); } quicksort(a, l, pivotindex-1); quicksort(a, ΕΠΛ 035 Δομές pivotindex+1, Δεδομένων και Αλγόριθμοι r); για Ηλ. Μηχ. και Μηχ. Υπολ. 15-8

Ζ δηαδηθαζία Partition ζηελ C int partition(int A[], int l, int r, int pivot) { while(l<r) { // προχωρούμε από l στο r μέχρι να χρειαστεί ένα swap while (A[l]<pivot && l<r) // leave <pivot on left l++; // προχωρούμε από r στο l μέχρι να χρειαστεί ένα swap while (pivot<=a[r] && l<r) //leave >=pivot on right r--; A 44 8 56 11 9 30 10 if (l == r) break; } // τώρα κάνε το swap if (A[l]>=pivot) l r-1 r pivot swap(a, l, r); // move >= to the right } // επέστρεψε το σημείο στο οποίο θέλουμε να γίνει η // εισαγωγή του pivot return l; 15-9

Παξάδεηγκα Δθηέιεζεο QuickSort BEFORE:[72,6,37,48,30,42,83,75] Index: 0 1 2 3 4 5 6 7 ** QuickSort [0,7] [72,6,37,48,30,42,83,75,] PivotIndex: 3(48) => Swapping 48, 75 [72,6,37,75,30,42,83,48,] Partitioning [0,6] Swapping 72, 42 [42,6,37,75,30,72,83,48,] Swapping 75, 30 [42,6,37,30,75,72,83,48,] Inserting Pivot at Position:4 Swapping 75, 48 [42,6,37,30,48,72,83,75,] ** QuickSort [0,3] [42,6,37,30,48,72,83,75,] PivotIndex: 1(6) => Swapping 6, 30 [42,30,37,6,48,72,83,75,] Partitioning [0,2] Inserting Pivot at Position:0 Swapping 42, 6 ** QuickSort [0,-1] -> RETURN ** QuickSort [1,3] [6,30,37,42,48,72,83,75,] PivotIndex: 2(37) => Swapping 37, 42 [6,30,42,37,48,72,83,75,] Partitioning [1,2] Inserting Pivot at Position:2 Swapping 42, 37 ** QuickSort [1,1] -> RETURN ** QuickSort [3,3] -> RETURN ** QuickSort [5,7] [6,30,37,42,48,72,83,75,] PivotIndex: 6(83) => Swapping 83, 75 [6,30,37,42,48,72,75,83,] Partitioning [5,6] with pivot:83 Inserting Pivot at Position:6 ** QuickSort [5,5] -> RETURN ** QuickSort [7,7] -> RETURN AFTER:[6,30,37,42,48,72,75,83,] 15-10

Αλάιπζε ηνπ Χξόλνπ Δθηέιεζεο Ζ εύπεζη ηος pivot απαηηεί ρξόλν Ο(1) θαη ε δηαδηθαζία Partition(Α, l, r, p) εθηειείηαη ζε σπόνο O(n) ζε θάζε επίπεδν ηεο αλαδξνκήο. Ζ αναδπομική εκηέλεζη ηνπ QuickSort παίξλεη ζηελ ρείξηζηε πεξίπηωζε ρξόλν O(n) θαη ζηελ θαιύηεξε πεξίπηωζε ρξόλν Ω(logn) Χείπιζηη πεπίπηωζη: Κάζε θνξά πνπ επηιέγνπκε ηνλ pivot όια ηα ζηνηρεία ηπγράλεη λα ηαμηλνκνύληαη είηε μόνο αξηζηεξά ηνπ (δειαδή <pivot) ή μόνο δεμηά ηνπ (δειαδή >=pivot) πρ 9,9,9,9,9,9,9 Σςνολικόρ ρξόλνο εθηέιεζεο Τ(n) O(n²). Βέληιζηη πεπίπηωζη: Κάζε θνξά πνπ επηιέγνπκε ηνλ pivot ηα μιζά ζηνηρεία ηαμηλνκνύληαη αξηζηεξά ηνπ (δειαδή <pivot) θαη ηα ςπόλοιπα μιζά δεμηά ηνπ (δειαδή >=pivot) πρ 1,2,3,4,5,6,7 Σςνολικόρ ρξόλνο εθηέιεζεο Τ(n) Ω(n log n). 15-11

Έμμεζη Ταξινόμηζη (Indirect Sorting) Έμμεζη Ταξινόμηζη (Indirect Sorting) Οη αιγόξηζκνπ πνπ έρνπκε παξνπζηάζεη ππνζέηνπλ πωο νη πίλαθεο-δεδνκέλα εηζόδνπ πεξηέρνπλ ακέπαιοςρ απιθμούρ θαη πξνϋπνζέηνπλ κεηαθίλεζε ηωλ ζηνηρείωλ κέζα ζηνλ πίλαθα. Τι γίνεηαι αν θέλοςμε να ηαξινομήζοςμε απσεία πος πεπιέσοςν πολύπλοκα ανηικείμενα (π.σ. εγγπαθέρ με πολλαπλέρ ζηήλερ)? Σε ηέηνηεο πεξηπηώζεηο ε κεηαθίλεζε (swapping) ζηνηρείωλ είλαη δαπαλεξή. Απηό κπνξεί λα απνθεπρζεί κε ηε χπήζη δεικηών: ωο δεδνκέλν εηζόδνπ ρξεζηκνπνηνύκε πίνακα πος πεπιέσει δείκηερ ζηα ζηνηρεία πνπ ζέινπκε λα ηαμηλνκήζνπκε. Σύγθξηζε θαη αληαιιαγή γίλεηαη κεηαμύ ηωλ δεηθηώλ αληί κεηαμύ ηωλ ηδίωλ ηωλ αληηθεηκέλωλ. Έηζη έρνπκε ιηγόηεξε κεηαθίλεζε ζηνηρείωλ. Οπνηνζδήπνηε από ηνπο αιγόξηζκνπο πνπ αλαθέξακε κπνξεί λα πινπνηεζεί κε απηό ηνλ ζπιινγηζκό ρωξίο λα αιιάμεη ν αιγόξηζκνο. 15-12

Δμωηεξηθή ηαμηλόκεζε (External Sorting) Τι γίνεηαι αν έσοςμε 256ΜΒ RAM αλλά θέλοςμε να ηαξινομήζοςμε ένα απσείο με 800ΜΒ έγγπαθερ? Ζ ηαμηλόκεζε κπνξεί λα γίλεηαη θαηά ημήμαηα: Έλα κέξνο ηνπ αξρείνπ κεηαθέξεηαη ζηελ θύξηα κλήκε, ηαμηλνκείηαη (με ένα από ηοςρ αλγόπιθμοςρ πος ζςζηηήζαμε) θαη απνζεθεύεηαη ζε έλα πξνζωξηλό αξρείν. Τν επόκελν ηκήκα κεηαθέξεηαη ζηελ θύξηα κλήκε θαη ηαμηλνκείηαη θαη κεηά ζπγρωλεύεηαη κε ην πξνζωξηλό αξρείν. Ζ δηαδηθαζία επαλαιακβάλεηαη κέρξη εμάληιεζεο ηνπ αξρηθνύ αξρείνπ. Με βάζε απηή ηελ θύξηα ηδέα ππάξρνπλ δηάθνξνη αιγόξηζκνη εμωηεξηθήο ηαμηλόκεζεο. Κύξηνο ζηόρνο ηνπο είλαη ε απνδνηηθή επεμεξγαζία ηεο δεπηεξεύνπζαο κλήκεο (δειαδή ηνπ καγλεηηθνύ δίζθνπ). Τέηνηνη αιγόξηζκνη βξίζθνπλ εθαξκνγέο ζε Βάζεηο Γεδνκέλωλ 15-13