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

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

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

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

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

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

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

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

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο 2: Πίνακες

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα

ΕΠΛ131 Αρχές Προγραμματισμού

Αριθμητικά Συστήματα

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

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

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα

Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing)

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

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

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

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

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

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

Σημειώσεις δεύτερης εβδομάδας

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

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

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

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

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

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

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

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

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

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

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

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

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

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

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

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

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

ΗΥ-150. Ταξινόµηση και Αναζήτηση

Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Προγραμματισμός Ι (ΗΥ120)

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

AVL-trees C++ implementation

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Δομημένος Προγραμματισμός (ΤΛ1006)

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ιαχείριση Πληροφοριών στο ιαδίκτυο

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

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

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

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

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

Σύστημα αρίθμησης. Τρόπος αναπαράστασης αριθμών Κάθε σύστημα αρίθμησης έχει μία βάση R

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

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

Transcript:

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ο αλγόριθμος ταξινόμησης Radix Sort -Δυο εκδοχές: Most Significant Digit (MSD) και Least Significant Digit (LSD) - Επίλυση δυο ασκήσεων στο χαρτί ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1

Επανάληψη BucketSort Έστω ότι ο πίνακας A n στοιχείων περιέχει στοιχεία που ανήκουν στο διάστημα [1..m]. O αλγόριθμος BucketSort βασίζεται πάνω στα ακόλουθα βήματα: 1.Δημιουργούμε ένα πίνακα bucketsμήκουςmκαι θέτουμε buckets[i]=0,για όλα τα i(αυτά τα είναι τα buckets -κάδοι) 2.Διαβάζουμε τον πίνακα Αξεκινώντας από το πρώτο στοιχείο. Αν διαβάσουμε το στοιχείο α, τότε αυξάνουμε την τιμή του buckets[α]κατά ένα. Επαναλαμβάνουμε το βήμα μέχρι το τελευταίο στοιχείο. 3.Τέλος, διαβάζουμε γραμμικά τον πίνακα buckets, o oποίος περιέχει αναπαράσταση του ταξινομημένου πίνακα, και θέτουμε τα στοιχεία του πίνακα Α με την ταξινομημένη ακολουθία. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 2

Επανάληψη BucketSort: Παράδειγμα Δεδομένο Εισόδου: Τα στοιχεία είναι στο εύρος m=[0,14], n=8 1 11 1 7 2 14 7 1 0 n-1 Μετά την 1 η εκτέλεση του Bucketsort(Εισαγωγή του 1) Μετά τη 2 η εκτέλεση του Bucketsort(Εισαγωγή του 11) Μετά τη 3 η εκτέλεση του Bucketsort(Εισαγωγή του 1) Μετά την 8ή εκτέλεση του Bucketsort m m m m ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3

Επανάληψη BucketSort: Πρόγραμμα στην C // Α: Πίνακας για ταξινόμηση μεγέθους n // Buckets: Βοηθητικός πίνακας μεγέθους m void BucketSort(int A[], int buckets[], int n, int m){ int i, j, k=0; } // Κατανομή στοιχείων στους σωστούς κάδους for (i=0; i<n; i++) { buckets[a[i]]++; } // Αντιγραφή στοιχείων από πίνακα BUCKETS // στον πίνακα A for (i=0; i<m; i++) { for (j=0; j<buckets[i]; j++) { A[k] = i; k++; } } Ο(n) Ο(n+m) Συνολικά περνάμε 1 φορά από τα στοιχεία του πίνακα BUCKETS (m) και μια φορά από αυτά του A (n) ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 4

Ο αλγόριθμος Bucket Sort Bucket Sort Κατανέμουμε τα n στοιχείασε ένα σύνολο από m κάδους. Περνούμε μία φορά από κάθε στοιχείο του πίνακα και γεμίζουμε τους κάδους. Ακολούθως τυπώνουμε τους m κάδους μου μας παράγει το ταξινομημένο αποτέλεσμα) ΜΕΙΟΝΕΚΤΗΜΑ:Δουλεύει μόνο για ακέραιους αριθμούς. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 5

Ο αλγόριθμος Radix Sort Η ιδέα του Αλγόριθμου Radix Sort Είναι κατάλληλος για ταξινόμηση m-αδικών πλειάδων Παράδειγμα: m=3, {(1,2,4), (1,5,3), } Μία m-αδικήπλειάδα μπορεί να συμβολίζει συμβολοσειρές (Strings με ASCII), π.χ., cat=(99,97,116) Ο Radix Sort εκτελεί m διαδοχικά καλέσματα στον Bucket Sort αρχίζοντας από την αρχή της πλειάδας (Most-Significant-Digit) ή το τέλος (Least-Significant- Digit) Most Significant Digit (MSD): Αρχίζει την επεξεργασία των δεδομένων από το πιο σημαντικό ψηφίο (most significant digit) και προχωρεί μέχρι το λιγότερο σημαντικό στοιχείο (least significant digit) από αριστερά προς δεξιά Least Significant Digit (LSD): το αντίστροφο από δεξιά προς αριστερά ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 6

Radix Sort: Most-Significant-Digit (MSD) Ένας αναδρομικό MSD RadixSort αλγόριθμος δουλεύει ως εξής: Πάρε το πιο σημαντικό ψηφίο από κάθε κλειδί Ταξινόμησε τα στοιχεία βάση αυτού του κλειδιού και παράλληλα ομαδοποίησε τα στοιχεία με το ίδιο κλειδί στον ίδιο κάδο Αναδρομικά, ταξινόμησε κάθε κάδο ξεκινώντας με το πιο σημαντικό ψηφίο Συνένωσε όλους τους κάδους με ταξινομημένη σειρά ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 7

Παράδειγμα Αναδρομικού Radix Sort-MSD Ταξινόμησε τη λίστα: 170, 045, 075, 090, 002, 024, 802, 066 Ταξινόμησε με το πιο σημαντικό ψηφίο (δηλ. εκατοντάδες 100s): Κάδος -Μηδέν εκατοντάδες (0xx): 045, 075, 090, 002, 024, 066 Κάδος -Μία εκατοντάδα (1xx): 170 Κάδος Οκτώ (8xx): 802 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8

Παράδειγμα Αναδρομικού Radix Sort-MSD(συν.) Ταξινόμησε βάση του επόμενου ψηφίου (δεκάδες 10s): Παρατήρηση: Χρειάζεται να ταξινομήσουμε μόνο τα στοιχεία με 0 εκατοντάδες (οι άλλοι κάδοι έχουν μόνο ένα στοιχείο) Κάδος -Μηδέν δεκάδες (0x): 002 Κάδος -Δύο δεκάδες (2x) : 024 Κάδος -Τέσσερις δεκάδες (4x) : 045 Κάδος -Έξι δεκάδες (6x): 066 Κάδος -Επτά δεκάδες (7x):075 Κάδος -Εννέα δεκάδες (9x):090 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 9

Παράδειγμα Αναδρομικού Radix Sort-MSD(συν.) Ταξινόμηση με μονάδες (1s) δεν χρειάζεται γιατί δεν υπάρχει κάδος με δεκάδες που να έχει περισσότερο από ένα στοιχείο Στο επόμενο βήμα, ο ταξινομημένος κάδος των 0xxάδων (που φαίνεται πιο πάνω) συνενώνεται με τους κάδους των 100άδων και 800άδων για να παράξουν την τελική ταξινομημένη σειρά: 002, 024, 045, 066, 075, 090, 170, 802 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 10

Ο αλγόριθμος Radix Sort Δουλεύει ο αλγόριθμος; Προφανώς, αν το πιο σημαντικό ψηφίο μεταξύ ακαι β είναι διαφορετικό και α<βτότε στο τέλος το αθα έρθει πριν από το β Αν το πιο σημαντικό ψηφίο μεταξύ ακαι βείναι ίσο και το δεύτερο πιο σημαντικό ψηφίο του β είναι πιο μικρό από το ατότε το βθα έρθει πριν από το α ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 11

RadixSort: Least-Significant-Digit (LSD) Αλγόριθμος Ταξινόμησε βάση του λιγότερο σημαντικού ψηφίου Αριθμοί με το ίδιο ψηφίο καταλήγουν στον ίδιο κάδο Ανακατάταξε όλους τους αριθμούς ως εξής: οι αριθμοί στον κάδο 0 προηγούνται τους αριθμούς στον κάδο 1, οι αριθμοί στον κάδο 1 προηγούνται τους αριθμούς στον κάδο 2, κοκ. Ταξινόμησε βάση του λιγότερο σημαντικού ψηφίου Συνέχισε αυτή την διαδικασία μέχρι όλοι οι αριθμοί να έχουν ταξινομηθεί για όλα τα ψηφία τους Σε αντίθεση με τον Radix Sort MSD, στον Radix Sort LSD τα στοιχεία μέσα στον ίδιο κάδο είναι στη σωστή σειρά κατά την διάρκεια της εκτέλεσης ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 12

Παράδειγμα Radix Sort-LSD Input data: a b a b a c c a a a c b b a b c c a a a c b b a ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 13

Παράδειγμα Radix Sort-LSD Pass 1: Looking at rightmost position. a b a b a c c a a a c b b a b c c a a a c b b a Place into appropriate pile. a b c ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 14

Παράδειγμα Radix Sort-LSD Pass 1: Looking at rightmost position. b b a Join piles. c c a c a a b a b a a c a b a a c b b a c a b c ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 15

Παράδειγμα Radix Sort-LSD Pass 2: Looking at next position. a b a c a a c c a b b a a c b b a b b a c a a c Place into appropriate pile. a b c ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 16

Παράδειγμα Radix Sort-LSD Pass 2: Looking at next position. a a c Join piles. b a c b a b b b a a c b c a a a b a c c a a b c ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 17

Παράδειγμα Radix Sort-LSD Pass 3: Looking at last position. c a a b a b b a c a a c a b a b b a c c a a c b Place into appropriate pile. a b c ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 18

Παράδειγμα Radix Sort-LSD Pass 3: Looking at last position. Join piles. a c b a b a b b a b a c c c a a a c b a b c a a a b c ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 19

Παράδειγμα Radix Sort-LSD Result is sorted. a a c a b a a c b b a b b a c b b a c a a c c a ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 20

Άσκηση 1 Υποθέστε ότι για είσοδο μας δίνονται δύο ταξινομημένες ακολουθίες Α και Β με n στοιχεία Οι ακολουθίες μπορεί να περιέχουν διπλά, τριπλά, κοκ. στοιχεία Περιγράψετε ένα αποδοτικό αλγόριθμο για να καθορίσετε αν η A και Β περιέχουν τον ίδιο σύνολο από στοιχεία. Τι είναι η χρονική πολυπλοκότητα του αλγόριθμου που προτείνετε; ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 21

Άσκηση 2 Υποθέστε ότι για είσοδο μας δίνονται δύο ταξινομημένες ακολουθίες Α και Β με n στοιχεία Περιγράψετε ένα αποδοτικό αλγόριθμο της τάξης O(nlgn) ο οποίος καθορίζει αν υπάρχουν στοιχεία a A και b B ώστε m=a+b. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 22

Λύσεις Άσκηση 1 We will move along the elements of A. For each new element we will compare the element with the current element of B. If they match, we will traverse A and B until we find a new element in A and a new element in B accordingly. If the elements are the same we repeat the previous step until the end of the lists. Else we report that the lists do not have the same set of elements. The above algorithm is O(n) ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 23

Λύσεις Άσκηση 2 Examine linearly all the elements a of A. For each element a, perform a binary search in the elements of B looking for an element b such that b=m-a Ex2(m, A, B) { Foreach a A { b=binarysearch(m-a, B); if (found(b)) { print ( %d + %d = %d, a, b, m) return; } } print ( element was not found in b ) } ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 24