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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης

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

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

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

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

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

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

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

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

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

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

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

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

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

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

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

Αλγοριθμικές Τεχνικές

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

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

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

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

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

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

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

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

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

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

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

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

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

Heapsort Using Multiple Heaps

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

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

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Αλγόριθμοι Γραφημάτων

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

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

Transcript:

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

Κύρια σημεία για μελέτη Το παράδειγμα του «διαίρει και βασίλευε» ( 4.1.1) Merge-sort ( 4.1.1) Ο αλγόριθμος Συγχωνεύοντας δύο ταξινομημένες ακολουθίες Το δέντρο Merge-sort Παράδειγμα εκτέλεσης Ανάλυση Γενική συγχώνευση και λειτουργίες συνόλων ( 4.2.1) Συνόψιση αλγόριθμων ταξινόμησης ( 4.2.1) 6/14/2007 3:04 AM Merge Sort 2

«Διαίρει και Βασίλευε» Η τεχνική divide and conquer είναι μια γενική αλγοριθμική τεχνική σχεδιασμού: Divide: Το σύνολο εισόδου S, χωρίζεται σε δύο υποσύνολα S 1 και S 2 Recur: Επίλυση των επιμέρους προβλημάτων που σχετίζονται με τα S 1 και S 2 Conquer: Συνδυασμός των λύσεων S 1 και S 2 σε μια λύση για το S Η base case για την αναδρομή είναι επιμέρους προβλήματα μεγέθους 0 ή 1 Ο Merge-sort είναι ένας αλγόριθμος ταξινόμησης που βασίζεται στην τεχνική «διαίρει και βασίλευε» Όπως και ο heap-sort Χρησιμοποιεί έναν συγκριτή Έχει πολυπλοκότητα O(n log n) Σε αντίθεση με τον heapsort Δεν χρησιμοποιεί βοηθητική ουρά προτεραιότητας Η πρόσβαση στα δεδομένα γίνεται με τρόπο ακολουθιακό (κατάλληλος για αποθήκευση δεδομένων στον δίσκο) 6/14/2007 3:04 AM Merge Sort 3

Merge-Sort Ο Merge-sort με μια ακολουθία εισόδου S με n στοιχεία αποτελείται από τρία βήματα: Divide: Το σύνολο εισόδου S, χωρίζεται σε δύο υποσύνολα S 1 και S 2 με n 2 στοιχεία το καθένα Recur: Τα S 1 και S 2 ταξινομούνται αναδρομικά Conquer: Συγχώνευση των S 1 και S 2 σε μια ταξινομημένη ακολουθία S Algorithm mergesort(s, C) Input sequence S with n elements, comparator C Output sequence S sorted according to C if S.size() > 1 (S 1, S 2 ) partition(s, n/2) mergesort(s 1, C) mergesort(s 2, C) S merge(s 1, S 2 ) 6/14/2007 3:04 AM Merge Sort 4

Συγχωνεύοντας δύο ταξινομημένες ακολουθίες Το βήμα conquer του merge-sort αποτελείται από την συγχώνευση δύο ακολουθιών A και B σε μια ταξινομημένη ακολουθία S που είναι η ένωση των A και B Η Συγχώνευση δύο ταξινομημένων ακολουθιών η καθεμία με n 2 στοιχεία και η υλοποίηση τους με διπλά συνδεδεμένη λίστα, παίρνει χρόνο O(n). Algorithm merge(a, B) Input sequences A and B with n 2 elements each Output sorted sequence of A B S empty sequence while A.isEmpty() B.isEmpty() if A.first().element() < B.first().element() S.insertLast(A.remove(A.first())) else S.insertLast(B.remove(B.first())) while A.isEmpty() S.insertLast(A.remove(A.first())) while B.isEmpty() S.insertLast(B.remove(B.first())) return S 6/14/2007 3:04 AM Merge Sort 5

Το δέντρο Merge-Sort Η εκτέλεση του merge-sort απεικονίζεται με ένα δυαδικό δέντρο Κάθε κόμβος αναπαριστά μια αναδρομική κλήση του merge-sort και αποθηκεύει Την αταξινόμητη ακολουθία και το partition της Την ταξινομημένη ακολουθία στο τέλος της εκτέλεσης Η ρίζα είναι η αρχική κλήση Τα φύλλα είναι κλήσεις σε υποακολουθίες μεγέθους 0 ή 1 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 6/14/2007 3:04 AM Merge Sort 6

Παράδειγμα εκτέλεσης Τμήμα (Partition) 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 7

Παράδειγμα εκτέλεσης (συν.) Αναδρομική κλήση, partition 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 8

Παράδειγμα εκτέλεσης (συν.) Αναδρομική κλήση, partition 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 9

Παράδειγμα εκτέλεσης (συν.) Αναδρομική κλήση, base case 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 10

Παράδειγμα εκτέλεσης (συν.) Αναδρομική κλήση, base case 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 11

Παράδειγμα εκτέλεσης (συν.) Συγχώνευση 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 12

Παράδειγμα εκτέλεσης (συν.) Αναδρομική κλήση,, base case, συγχώνευση 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 13

Παράδειγμα εκτέλεσης (συν.) Συγχώνευση 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 14

Παράδειγμα εκτέλεσης (συν.) Αναδρομική κλήση,,συγχώνευση,συγχώνευση 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 15

Παράδειγμα εκτέλεσης (συν.) Συγχώνευση 7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9 7 2 9 4 2 4 7 9 3 8 6 1 1 3 8 6 7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6 7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1 6/14/2007 3:04 AM Merge Sort 16

Ανάλυση του Merge-Sort Το ύψος h του merge-sort δέντρου είναι O(log n) Σε κάθε αναδρομική κλήση χωρίζουμε την ακολουθία στο μισό, Η συνολική δουλειά που γίνεται στους κόμβους βάθους i είναι O(n) Τμηματοποιούμε και συγχωνεύουμε 2 i ακολουθίες μεγέθους n 2 i Γίνονται 2 i 1 αναδρομικές κλήσεις Έτσι, ο συνολικός χρόνος εκτέλεσης του merge-sort είναι O(n log n) βάθος 0 #ακολ. μέγεθος 1 n 1 i 2 2 i n 2 n 2 i 6/14/2007 3:04 AM Merge Sort 17

Γενική Συγχώνευση Γενική συγχώνευση δύο ταξινομημένων ακολουθιών A και B Πρότυπη μέθοδος genericmerge Βοηθητικοί μέθοδοι aisless bisless bothareequal Τρέχει σε χρόνο O(n A n B ) δεδομένου ότι οι βοηθητικές μέθοδοι τρέχουν σε χρόνο O(1) Algorithm genericmerge(a, B) S empty sequence while A.isEmpty() B.isEmpty() a A.first().element(); b B.first().element() if a < b aisless(a, S); A.remove(A.first()) else if b < a bisless(b, S); B.remove(B.first()) else { b = a } bothareequal(a, b, S) A.remove(A.first()); B.remove(B.first()) while A.isEmpty() aisless(a, S); A.remove(A.first()) while B.isEmpty() bisless(b, S); B.remove(B.first()) return S 6/14/2007 3:04 AM Merge Sort 18

Πράξεις συνόλων Αναπαριστούμε ένα σύνολο με την ταξινομημένη ακολουθία των στοιχείων του Με την εξειδίκευση των βοηθητικών μεθόδων ο generic merge αλγόριθμος μπορεί να χρησιμοποιηθεί για βασικές πράξεις συνόλων: Ένωση Τομή Διαφορά Ό χρόνος εκτέλεσης για μια πράξη είναι O(n A n B ) Ένωση: aisless(a, S) S.insertFirst(a) bisless(b, S) S.insertLast(b) bothareequal(a, b, S) S. insertlast(a) Τομή: aisless(a, S) { do nothing } bisless(b, S) { do nothing } bothareequal(a, b, S) S. insertlast(a) 6/14/2007 3:04 AM Merge Sort 19

Συνόψιση αλγόριθμων ταξινόμησης Αλγόριθμος Χρόνος Σημειώσεις selection-sort O(n 2 ) insertion-sort O(n 2 ) heap-sort O(n log n) merge-sort O(n log n) Αργός in-place για μικρά δεδομένα (< 1K) Αργός in-place για μικρά δεδομένα (< 1K) Γρήγορος in-place για μεγάλα δεδομένα(1k 1M) Γρήγορος sequential data access για πολύ μεγάλα δεδομένα (> 1M) 6/14/2007 3:04 AM Merge Sort 20