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

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

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

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

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

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

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

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

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

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

Δομές Δεδομένων (Data Structures)

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Θέματα Προγραμματισμού Η/Υ

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

Περιεχόμενα. Περιεχόμενα

Υπολογιστική Πολυπλοκότητα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

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

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

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

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

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

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

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8

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

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

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

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

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

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

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

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

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

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

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι

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

5.1. Προσδοκώμενα αποτελέσματα

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Πληροφορική ΙΙ Ενότητα 1

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

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

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

Προτεινόμενος τρόπος διδασκαλίας του μαθήματος με ενδεικτικό χρονοπρογραμματισμό. Α/Α Ενότητες Περιγραφή Ώρες 1 Εισαγωγικό μάθημα 1

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

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

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων

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

17. Εισαγωγή σε αριθμητικές μεθόδους για μηχανικούς και αλγορίθμους

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

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ασκήσεις (2) Άσκηση 1

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ

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

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

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

δυαδική αναζήτηση Παύλος Σ. Εφραιμίδης

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

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

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

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

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

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

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

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

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

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

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

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

Transcript:

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης

Τι είναι αλγόριθμος; Βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος Ανεξάρτητη από το υπολογιστικό σύστημα! Τυπικός ορισμός: Μια διαδικασία με πεπερασμένο αριθμό διατεταγμένων βημάτων πιθανώς με επαναλήψεις και συνθήκες η οποία επιλύει ένα συγκεκριμένο πρόβλημα μετασχηματισμού εισόδων σε εξόδους σε πεπερασμένο χρόνο Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 2

Βασικές βήμα 1 βήμα 2... βήμα Ν true συνθήκη false ακολουθία απόφαση υπό συνθήκη συνθήκη true επανάληψη Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 3

Υποπρογράμματα (υποαλγόριθμοι) κλήση επιστροφή Επαναχρησιμοποίηση κλήση συναρτήσεων Ευκολότερη κατανόηση σημαντικό όσο και η απόδοση! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 4

Αναδρομή: ένα κομψό εργαλείο Το γενικότερο πλαίσιο: μείωση ενός προβλήματος σε πολλά υποπροβλήματα Και στη συνέχεια, συνδυασμός των μερικών λύσεων Αναδρομή Μία συνάρτηση καλεί τον εαυτό της δημιουργεί μικρότερα υποπροβλήματα Μέχρι να φτάσει σε μια βασική περίπτωση με άμεσο υπολογισμό του (μερικού) αποτελέσματος Ακολουθούν επιστροφές με συνδυασμό των μερικών αποτελεσμάτων μέχρι το τελικό αποτέλεσμα Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 5

Αναδρομή: ένα παράδειγμα Πώς θα καλύψουμε (αν μπορούμε) τη σκακιέρα με σχήματα τύπου L; Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 6

Αναδρομή: ένα παράδειγμα Βλέπετε τη λύση; Είναι η αναδρομή! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 7

Αναδρομή Αλγοριθμικά κομψή λύση αλλά Πιθανή επιβάρυνση κατά την κλήση των συναρτήσεων Και μεγαλύτερη χρήση πόρων για διατήρηση προηγούμενων καταστάσεων Συχνά πρέπει να μετατρέψουμε την αναδρομή σε επανάληψη Ευτυχώς αυτό είναι πάντα δυνατό ακόμα κι αν οδηγεί σε λιγότερο κομψή διατύπωση του αλγορίθμου με τη βοήθεια δομών που μιμούνται τη λειτουργία της αναδρομής Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 8

Πολυπλοκότητα ενός αλγορίθμου Για την κατανόηση της απόδοσής του Χρειαζόμαστε ένα βασικό μέγεθος Που θα εστιάζει στη μεγάλη εικόνα Την αύξηση του χρόνου εκτέλεσης ανάλογα με το μέγεθος του προβλήματος ( εισόδου) Ανεξάρτητα από την ταχύτητα της γλώσσας προγραμματισμού Ανεξάρτητα από την ταχύτητα του υλικού Προσοχή: δεν ενδιαφερόμαστε για απόλυτους χρόνους Αντιθέτως, υπολογίζουμε πόσες φορές εκτελείται μια βασική λειτουργία! Σε σχέση με το μέγεθος των εισόδου Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 9

Ο ασυμπτωτικός συμβολισμός Ο(...) Big O notation Έκφραση κλάσης πολυπλοκότητας σε σχέση με το μέγεθος n των εισόδου αφαιρώντας σταθερούς παράγοντες Τυπικά O(g(n)), είναι ένα σύνολο συναρτήσεων f(n) ανήκει στο O(g(n)) εάν υπάρχει n 0 και θετική σταθερά c έτσι ώστε f(n) cg(n) για κάθε n nn 0 Πρακτικά O(g(n)), είναι οι συναρτήσεις που αυξάνονται με αργότερο ρυθμό από το g(n) - άρα είναι αποδοτικότερες! Παράδειγμα Τα n 2, 3n 2, 85.8n 2 +3.44 ανήκουν όλα στο O(n 2 ) Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 10

Ο ασυμπτωτικός συμβολισμός Ο(...) Αν για παράδειγμα η πολυπλοκότητα ενός αλγορίθμου είναι Ο(n 2 ) Αυτό σημαίνει ότι για μέγεθος n θα εκτελεστεί αριθμός λειτουργιών της τάξης του n 2 Και ότι ένας αλγόριθμος O(n) είναι αποδοτικότερος! Πολυωνυμικά προβλήματα O(logn), O(n), O(n 2 ), O(n k ) Συνήθως επιλύσιμα Μη πολυωνυμικά προβλήματα O(k n ) ή O(n!) Γενικά, μη επιλύσιμα Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 11

Η βασική μονάδα Η εγγραφή (record ή structure) Μία αυτοτελής ομάδα Με συγκεκριμένη μορφή αποθήκευσης Κάθε μέλος της ομάδας βρίσκεται σε καθορισμένη θέση (διεύθυνση) μέσα στην εγγραφή Ως κόμβος σε πιο σύνθετες +200 bytes όνομα επώνυμο ηλικία μισθός Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 12

Πίνακες (arrays) Πίνακες Ακολουθία όμοιων εγγραφών Σε συνεχόμενες θέσεις μνήμης Πίνακας μιας διάστασης Ο υπολογισμός της θέσης (διεύθυνσης) του i οστού στοιχείου είναι άμεσος Αρχή πίνακα + i * μέγεθος εγγραφής Θυμηθείτε: το i ξεκινά από το 0! Είναι δυνατή η υλοποίηση πινάκων πιο πολλών διαστάσεων Π.χ. για πίνακα δύο διαστάσεων, ως συνεχόμενες σειρές στη μνήμη Πώς υπολογίζεται στην περίπτωση αυτή η διεύθυνση του στοιχείου i, j ; Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 13

Λειτουργίες σε πίνακες Πίνακες Λήψη στοιχείου i Σταθερή πολυπλοκότητα O(1) Εφόσον ο υπολογισμός της θέσης του κάθε στοιχείου είναι άμεσος Προσθήκη στοιχείου (στο τέλος) Ο(1) θεωρώντας ότι υπάρχει χώρος Άμεσος υπολογισμός θέσης νέου στοιχείου Εισαγωγή στοιχείου (π.χ. στην αρχή) Ο(n) θα πρέπει να μετατοπιστούν τα ήδη υπάρχοντα στοιχεία! νέο Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 14

Αναζήτηση σε πίνακα Πίνακες Αναζήτηση Αναζήτηση στοιχείου με κάποιες ιδιότητες Τιμές-κλειδιά Εύρεση θέσης (i) στοιχείου αν υπάρχει! Εάν τα στοιχεία δεν είναι ταξινομημένα... Με βάση τις αναζητούμενες τιμές-κλειδιά...τότε πρέπει να διασχίσουμε τον πίνακα σειριακά από τη μία άκρη προς την άλλη (διάσχιση πίνακα) συγκρίνοντας κάθε στοιχείο που συναντάμε Ο(n) OK για μικρούς πίνακες 5 10 3-7 12-11 5 10 23 1 Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 15

Δυαδική Αναζήτηση (binary search) Πίνακες Αναζήτηση Εάν τα στοιχεία είναι ταξινομημένα... Με βάση τις αναζητούμενες τιμές-κλειδιά...τότε η αναζήτηση γίνεται πολύ πιο αποδοτική! Χωρίζοντας τον πίνακα στη μέση Και ψάχνοντας μόνο ένα από τα δύο μέρη 1 Μικρότερο υποπρόβλημα! Επαναλαμβάνουμε τη διαδικασία μέχρι την εύρεση ή μέχρι να φανεί ότι δεν υπάρχει αυτό που ψάχνουμε O(log 2 n) η μόνη βιώσιμη λύση για μεγάλους πίνακες! start:0 mid:4 end:8-11 -7 1 3 5 10 10 12 23 Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 16

Δυαδική Αναζήτηση (binary search) Πίνακες Αναζήτηση 1 1 start:0 end:3-11 -7 1 3 5 10 10 12 23 mid:1 start:2 end:3-11 -7 1 3 5 10 10 12 23 mid:2 Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 17

Ταξινόμηση Πίνακες Αναζήτηση Ταξινόμηση Συνήθης λειτουργία σε πίνακες Με βάση τιμές κλειδιών (μέρους στοιχείου πίνακα) Ως βάση για την εφαρμογή άλλων αλγορίθμων Όπως η δυαδική αναζήτηση που είδαμε προηγουμένως Δεν υπάρχει μοναδικός αλγόριθμος ταξινόμησης με την βέλτιστη πολυπλοκότητα Εξαρτάται από τη μέχρι τώρα διάταξη των Στη συνέχεια θα δούμε ορισμένους μόνο από το σύνολο των αλγορίθμων ταξινόμησης Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 18

Ταξινόμηση παρεμβολής (insertion sort) Πίνακες Αναζήτηση Ταξινόμηση Ο πίνακας χωρίζεται σε δύο μέρη Το ταξινομημένο μέρος Αρχικά περιέχει το πρώτο στοιχείο του πίνακα Και το αταξινόμητο Τα υπόλοιπα στοιχεία Κάθε στοιχείο του αταξινόμητου Προωθείται στη σωστή θέση μέσα στο ταξινομημένο μέρος Το ταξινομημένο μέρος σταδιακά μεγαλώνει O(n 2 ) στη χειρότερη περίπτωση O(n) στην καλύτερη (ήδη ταξινομημένα) Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 19

Ταξινόμηση παρεμβολής (insertion sort) Πίνακες Αναζήτηση Ταξινόμηση 10 3-7 12-11 3 10-7 12-11 -7 3 10 12-11 -7 3 10 12-11 -11-7 3 10 12 Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 20

Quicksort Πίνακες Αναζήτηση Ταξινόμηση Ένας από τους γνωστότερους αλγορίθμους ταξινόμησης Ακολουθεί την τακτική της διαμέρισης του πίνακα σε δύο μέρη Μικρότερα και μεγαλύτερα στοιχεία από (τυπικά) το πρώτο στοιχείο του πίνακα Και στη συνέχεια ταξινομεί αναδρομικά τους δύο υποπίνακες Στο τέλος συνενώνει τους πίνακες Μικρότερα + στοιχείο διαμέρισης + μεγαλύτερα O(n 2 ) στη χειρότερη περίπτωση (ήδη ταξινομημένα) O(nlog 2 n) καλύτερη περίπτωση και κατά μέσο όρο Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 21

Quicksort Πίνακες Αναζήτηση Ταξινόμηση -11 2 3-7 12-11 -7-11 2 3 12-7 3 12-11 -7 3 12-11 -7 2 3 12 Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 22

Διασυνδεδεμένες λίστες Πίνακες Αναζήτηση Ταξινόμηση Διασυνδεδεμένες λίστες Για αποθήκευση ακολουθίας στοιχείων Εναλλακτικά των πινάκων Αποτελείται από κόμβους Στοιχεία (εγγραφές ) Κάθε κόμβος διασυνδέεται με τον επόμενο Μονή ή διπλή φορά διασύνδεσης Η εισαγωγή είναι O(1) Αλλαγή μόνο της διασύνδεσης των κόμβων Θα πρέπει όμως να ξέρουμε το σημείο εισαγωγής.. Αλλά η προσπέλαση τυχαίου στοιχείου γίνεται τώρα O(n) Θα πρέπει να διασχίσουμε τη λίστα από κάποια άκρη της μέχρι να φτάσουμε στο στοιχείο που θέλουμε αρχή Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (Ι) 23