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

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

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

Ανάλυση. Ο εσωτερικός ϐρόχος εκτελείται i + 1 ϕορές, για i = 0,..., n 1.

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

4. Συνδεδεμένες Λίστες

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

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

9. Κόκκινα-Μαύρα Δέντρα

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

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

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

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

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

Ενδεικτικές Ερωτήσεις Θεωρίας

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

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

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

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

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

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

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

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

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

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

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

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

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

Επιµέλεια Θοδωρής Πιερράτος

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

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

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)

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

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ενότητα 7 Ουρές Προτεραιότητας

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

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

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

k 1 j 1 A[k] i A[...]... A[...]... k A4.

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

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Κεφ.11: Ευρετήρια και Κατακερματισμός

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

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

10. Πίνακες Κατακερματισμού

ΕΚΠΑΙΔΕΥΤΗΡΙΑ ΝΕΑ ΠΑΙΔΕΙΑ

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

JDSL Java Data Structures Library

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

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

Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

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

Βασικές Έννοιες Δοµών Δεδοµένων

ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING)

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

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

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

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

Προτεινόμενα Θέματα ΑΕΠΠ

Insert(K,I,S) Delete(K,S)

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

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

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

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

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

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

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

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

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

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Πίνακες (Arrays) Είναι μία διαδεδομένη δομή αποθήκευσης δεδομένων η οποία περιέχει δεδομένα του ίδιου τύπου Αποθήκευση δεδομένων σε συνεχόμενες θέσεις στη μνήμη Προσπέλαση δεδομένων με βάση τη θέση τους στη μνήμη Το i-στοιχείο του πίνακα Α είναι Α[i] Μήτρα m x n είναι ένας πίνακας με m γραμμές και n στήλες Τα m και n αντιστοιχούν στις δύο διαστάσεις του πίνακα Ανάλογα με τις ανάγκες/απαιτήσεις μπορεί να χρησιμοποιούνται πολυδιάστατοι πίνακες Δομές Δεδομένων, 3ο Εξάμηνο 2

Πίνακες (Arrays): Βασικές Λειτουργίες Εισαγωγή Απλή: arr[10] = 77; Κρατείται ξεχωριστά το πλήθος των στοιχείων που έχουν εισαχθεί Αναζήτηση Στοιχείου με τιμή 77 Απαιτεί να διατρέξουμε το array έως ότου εντοπιστεί η θέση όπου είναι αποθηκευμένο το 77 ιαγραφή Αρχικά γίνεται αναζήτηση του στοιχείου προς διαγραφή Έπειτα, μετακινούνται όλα τα στοιχεία που βρίσκονται σε μεγαλύτερες θέσεις κατά μία θέση προς τα αριστερά εν είναι επιθυμητό να υπάρχουν κενές θέσεις στον πίνακα (είναι όμως δυνατό να υλοποιηθεί και με αυτό τον τρόπο) Δομές Δεδομένων, 3ο Εξάμηνο 3

Εισαγωγή Στοιχείου Εστω πίνακας a χωρητικότητας 10 θέσεων Ένα νέο στοιχείο εισάγεται στο πρώτο κενό κελί Κρατάμε το πλήθος των στοιχείων στον πίνακα Εισαγωγή στοιχείου 37 στη θέση 0: a[0] = 37 Εισαγωγή στοιχείου 22 στη θέση 1: a[1] = 22 Εισαγωγή στοιχείου 99 στη θέση 2: a[2] = 99 Η εισαγωγή στοιχείου σε πίνακα είναι γρήγορη, καθώς γίνεται σε σταθερό χρόνο Ο(1) 0 1 2 3 4 5 6 7 8 9 37 22 99 Δομές Δεδομένων, 3ο Εξάμηνο 4

Αναζήτηση Στοιχείου Η αναζήτηση στοιχείου γίνεται με βάση την τιμή του στοιχείου, έστω το 58 Για τον εντοπισμό του στοιχείου, διατρέχουμε τον πίνακα κελί-κελί από την πρώτη θέση μέχρι την τελευταία θέση στην οποία υπάρχει αποθηκευμένο στοιχείο Εάν συναντήσουμε το 58, σταματάμε (επιτυχής αναζήτηση) Μπορεί να μην το συναντήσουμε (αποτυχημένη αναζήτηση) Κατά μέσο όρο, η αναζήτηση εξετάζει Ν/2 στοιχεία (όπου Ν το πλήθος των στοιχείων) πολυπλοκότητα Ο(Ν) Στη χειρότερη περίπτωση θα εξετάσει Ν στοιχεία 0 1 2 3 4 5 6 7 8 9 37 22 99 42 11 58 67 71 Δομές Δεδομένων, 3ο Εξάμηνο 5

Διαγραφή Στοιχείου Η διαγραφή ενός στοιχείου απαιτεί πρώτα τον εντοπισμό του Αφού εντοπιστεί το στοιχείο και διαγραφεί, όλα τα επόμενα στοιχεία μεταφέρονται μία θέση κάτω, ώστε να καλυφθεί το κενό Η διαγραφή είναι πολυπλοκότητας Ο(Ν), αφού απαιτεί κατά μέσο όρο Αναζήτηση σε Ν/2 στοιχεία Μετακίνηση υπόλοιπων Ν/2 στοιχείων 0 1 2 3 4 5 6 7 8 9 37 22 99 42 11 58 67 71 27 16 0 1 2 3 4 5 6 7 8 37 22 99 42 11 67 71 27 16 Δομές Δεδομένων, 3ο Εξάμηνο 6

Το Ζήτημα των Διπλών Εγγραφών Κατά τη σχεδίαση μιας δομής δεδομένων πρέπει να προαποφασίσουμε εάν επιτρέπονται καταχωρήσεις διπλών εγγραφών (=δύο στοιχείων με την ίδια τιμή) Η ύπαρξη διπλοεγγραφών περιπλέκει τους αλγόριθμους αναζήτησης και διαγραφής Είτε εύρεση (διαγραφή) όλων των στοιχείων με τιμή Χ Είτε τερματισμός μετά την εύρεση (διαγραφή) του πρώτου Η εισαγωγή παραμένει η ίδια, όμως εάν δεν επιτρέπονται διπλοεγγραφές, τότε πρέπει ο αλγόριθμος εισαγωγής να ελέγχει κάθε υπάρχον στοιχείο πριν την εισαγωγή Δομές Δεδομένων, 3ο Εξάμηνο 7

Το Ζήτημα των Διπλών Εγγραφών Χωρίς διπλοεγγραφές Με διπλοεγγραφές Αναζήτηση Ν/2 συγκρίσεις Ν συγκρίσεις Εισαγωγή Ν συγκρίσεις, μία κίνηση ιαγραφή Ν/2 συγκρίσεις, Ν/2 κινήσεις Καμία σύγκριση, μία κίνηση Ν συγκρίσεις, περισσότερες από Ν/2 κινήσεις Δομές Δεδομένων, 3ο Εξάμηνο 8

Πίνακες στη Java: Δημιουργία Πίνακα Με χρήση του τελεστή new int[] intarray; intarray = new int[100]; // Ορίζει μια αναφορά στον πίνακα // ημιουργεί τον πίνακα και ορίζει το // intarray για να αναφέρεται σε αυτόν int[] intarray = new int[100]; Εύρεση μεγέθους πίνακα Με χρήση της length int arraylength = intarray.length; Δομές Δεδομένων, 3ο Εξάμηνο 9

Πίνακες στη Java: Προσπέλαση Στοιχείων Πίνακα Τα στοιχεία ενός πίνακα προσπελαύνονται μέσω ενός δείκτη μέσα σε αγκύλες temp = intarray[3]; intarray[7] = 66; // Πάρε τα περιεχόμενα του 4 ου στοιχείου // Βάλε το 66 στο 8 ο κελί Το πρώτο στοιχείο ενός πίνακα παίρνει το δείκτη 0, όχι 1 Εάν χρησιμοποιήσετε δείκτη μικρότερο του μηδέν ή μεγαλύτερο του μήκους του πίνακα μείον 1 java.lang.arrayindexoutofboundsexception Δομές Δεδομένων, 3ο Εξάμηνο 10

Πίνακες στη Java: Αρχικοποίηση Ένας πίνακας ακεραίων αρχικοποιείται με το 0 όταν δημιουργείται Αυτό μπορείτε να το αλλάξετε με τον εξής τρόπο int[] intarray = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27}; Ένας πίνακας αντικειμένων περιέχει στοιχεία null, ώσπου αυτά να πάρουν τιμές autodata[] cararray = new autodata[4000]; Δομές Δεδομένων, 3ο Εξάμηνο 11

Δομές Δεδομένων, 3ο Εξάμηνο 12

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 13

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 14

Καλύτερη Οργάνωση του Προγράμματος σε Κλάσεις Ενσωμάτωση του πίνακα σε μία κλάση Η κλάση αυτή θα παρέχει μια διεπαφή μεθόδων υψηλού επιπέδου insert(), find(), delete() ε χρειάζεται ο χρήστης να ασχολείται με το δείκτη του πίνακα Άρα, ο χρήστης επικεντρώνεται στο τι (όχι στο πώς) πρόκειται να εισαχθεί, διαγραφεί και προσπελαστεί Δομές Δεδομένων, 3ο Εξάμηνο 15

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 16

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 17

Δομές Δεδομένων, 3ο Εξάμηνο 18

Δομές Δεδομένων, 3ο Εξάμηνο 19

Ταξινομημένοι Πίνακες Δομές Δεδομένων, 3ο Εξάμηνο 20

Ταξινομημένοι Πίνακες Ένας πίνακας στον οποίο τα δεδομένα διευθετούνται με αύξουσα (ή και φθίνουσα) σειρά κλειδιού Η μικρότερη τιμή κλειδιού βρίσκεται στο κελί με δείκτη 0 Κάθε κελί περιέχει τιμή μεγαλύτερη από το προηγούμενο κελί 0 1 2 3 4 5 6 7 8 9 11 22 37 42 58 67 71 83 Πώς γίνεται η αναζήτηση σε έναν ταξινομημένο πίνακα; Δομές Δεδομένων, 3ο Εξάμηνο 21

Γραμμική Αναζήτηση Μπορώ να εφαρμόσω την αναζήτηση όπως ακριβώς στην περίπτωση του μη ταξινομημένου πίνακα Για τον εντοπισμό του στοιχείου, διατρέχουμε τον πίνακα κελί-κελί από την πρώτη θέση μέχρι την τελευταία θέση στην οποία υπάρχει αποθηκευμένο στοιχείο Εάν συναντήσουμε το 58, σταματάμε (επιτυχής αναζήτηση) Μπορεί να μην το συναντήσουμε (αποτυχημένη αναζήτηση) Αυτός ο αλγόριθμος καλείται γραμμική αναζήτηση και έχει πολυπλοκότητα Ο(Ν), όπου Ν το πλήθος στοιχείων του πίνακα Ποτέ δεν εκτελώ γραμμική αναζήτηση σε ταξινομημένο πίνακα ιότι υπάρχει πιο αποδοτική μέθοδος αναζήτησης (δυαδική αναζήτηση) Δομές Δεδομένων, 3ο Εξάμηνο 22

Δυαδική Αναζήτηση Εφαρμόσιμη μόνο σε ταξινομημένους πίνακες Πολύ ταχύτερη από τη γραμμική αναζήτηση (ειδικά για μεγάλους πίνακες) Πώς λειτουργεί η εύρεση του στοιχείου με τιμή Χ; Χωρίζει το πλήθος των κελιών στη μέση, ελέγχει το κλειδί Μ του μεσαίου κελιού, και επαναλαμβάνει τη διαδικασία στο αριστερό κομμάτι (εάν Χ<Μ) ή στο δεξιό κομμάτι (εάν Χ>Μ) του πίνακα Π.χ. Αναζήτηση του 71 0 1 2 3 4 5 6 7 8 9 11 22 37 42 58 67 71 83 Δομές Δεδομένων, 3ο Εξάμηνο 23

Δυαδική Αναζήτηση Σε μια δυαδική αναζήτηση κάθε προσπάθεια χωρίζει το εύρος των πιθανών τιμών στη μέση Σε κάθε βήμα, υποδιπλασιάζεται το μέγεθος του πίνακα στο οποίο πρέπει να γίνει η αναζήτηση Το κόστος της δυαδικής αναζήτησης είναι λογαριθμικό Ο(logΝ) ως προς το μέγεθος του πίνακα Ν Σε σχέση με τη γραμμική αναζήτηση που έχει κόστος Ο(Ν): O(logN) < O(N) Δομές Δεδομένων, 3ο Εξάμηνο 24

Τυπική Απόδειξη Έστω ταξινομημένος πίνακας (π.χ., ακεραίων) μήκους L(0)=n. Εκτελούμε δυαδική αναζήτηση, που διαρκεί k επαναληπτικά βήματα. Στο i-οστό επαναληπτικό βήμα εκτελούμε σταθερό αριθμό στοιχειωδών πράξεων: O(1) σύγκρισεις του στοιχείου προς αναζήτηση με τα άκρα δύο υποπινάκων, μήκους L(i-1)/2. Στο i-οστό βήμα εξετάζουμε υποπίνακα μήκους L(i-1)/2: Δομές Δεδομένων, 3ο Εξάμηνο 25

Τυπική Απόδειξη Ο αλγόριθμος τερματίζει το πολύ όταν το μήκος του πίνακα που εξετάζουμε σε κάποιο βήμα είναι 1: δηλαδή όταν L(k)=1. Τότε: Δομές Δεδομένων, 3ο Εξάμηνο 26

Δομές Δεδομένων, 3ο Εξάμηνο 27

Δομές Δεδομένων, 3ο Εξάμηνο 28

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 29

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 30

Πλεονεκτήματα Ταξινομημένων Πινάκων Πολύ γρηγορότερος χρόνος αναζήτησης σε σχέση με μη ταξινομημένο πίνακα Όμως, η εισαγωγή διαρκεί παραπάνω διότι πρέπει όλα τα στοιχεία με υψηλότερη τιμή κλειδιού να μετακινηθούν για να δημιουργηθεί χώρος για το νέο στοιχείο που εισάγεται Οι διαγραφές είναι αργές και στα δύο είδη πινάκων, διότι πρέπει να μετακινηθούν στοιχεία για να καλύψουν το κενό του στοιχείου που διαγράφεται Οι ταξινομημένοι πίνακες είναι χρήσιμοι σε περιπτώσεις που οι αναζητήσεις είναι συχνές, ενώ οι εισαγωγές και οι διαγραφές δεν είναι Δομές Δεδομένων, 3ο Εξάμηνο 31

Ανάλυση Big-O Αλγόριθμος Χρόνος Εκτέλεσης Γραμμική Αναζήτηση O(N) υαδική Αναζήτηση O(logN) Εισαγωγή σε μη ταξινομημένο πίνακα O(1) Εισαγωγή σε ταξινομημένο πίνακα O(N) ιαγραφή σε μη ταξινομημένο πίνακα O(N) ιαγραφή σε ταξινομημένο πίνακα O(N) Δομές Δεδομένων, 3ο Εξάμηνο 32

Γιατί δε Χρησιμοποιούμε τους Πίνακες για όλα; Θέματα απόδοσης Μη ταξινομημένοι πίνακες Γρήγορη εισαγωγή Ο(1), όμως αργή αναζήτηση Ο(Ν) Ταξινομημένοι πίνακες Γρήγορη αναζήτηση Ο(logN), όμως αργή εισαγωγή Ο(Ν) Σταθερό μέγεθος πινάκων κατά τη δημιουργία Πρέπει να εκτιμήσουμε το πλήθος των στοιχείων που θα αποθηκευθούν, πριν τη χρήση του πίνακα Υπερεκτίμηση μεγέθους κατανάλωση μνήμης άσκοπα Υποτίμηση μεγέθους ο πίνακας δεν μπορεί να καλύψει τις ανάγκες αποθήκευσης στοιχείων Δομές Δεδομένων, 3ο Εξάμηνο 33

Πρόβλημα 1: Αναζήτηση Τυχαίου Στοιχείου σε Πίνακα Έστω πίνακας A που αποθηκεύει σύνολο n διαφορετικών στοιχείων. Έστω ένα στοιχείο, a, από αυτά, επιλεγμένο από την ομοιόμορφη κατανομή (με πιθανότητα 1/n). Πόσες συγκρίσεις κατά μέσο όρο απαιτεί η εύρεση της θέσης στον A όπου είναι αποθηκευμένο το στοιχείο a? Δομές Δεδομένων, 3ο Εξάμηνο 34

Πρόβλημα 1: Αναζήτηση Τυχαίου Στοιχείου σε Πίνακα Με πιθανότητα 1/n το a είναι το στοιχείο που βρίσκεται αποθηκευμένο στην i-οστή θέση του πίνακα A. Για να διαπιστωθεί αυτό απαιτούνται ακριβώς i συγκρίσεις. Αν T(a) είναι το πλήθος συγκρίσεων για την εύρεση του a: Δομές Δεδομένων, 3ο Εξάμηνο 35

Πρόβλημα 2: Πιο Αποδοτικοί Πίνακες Σε έναν πίνακα A, nθέσεων, έχουμε: Εισαγωγή: O(1). Αναζήτηση: O(n). ιαγραφή: O(n)(αναζήτηση + μετακίνηση στοιχείων). 1. Αν θέλουμε να αποθηκεύουμε σε έναν πίνακα οποιοδήποτε υποσύνολο των ακέραιων τιμών 0,1,2,,n-1, μπορούμε να βελτιώσουμε το χρόνο των πράξεων Αναζήτηση και ιαγραφή, χωρίς να αυξήσουμε τον χρόνο εισαγωγής? Αν ναι, πώς? Δομές Δεδομένων, 3ο Εξάμηνο 36

Πρόβλημα 2: Πιο Αποδοτικοί Πίνακες Δομές Δεδομένων, 3ο Εξάμηνο 37

Πρόβλημα 2: Πιο Αποδοτικοί Πίνακες 2. Θεωρούμε την «Τυφλή ιαγραφή», που παίρνει σαν όρισμα μια θέση, i, στον πίνακα και «διαγράφει» το στοιχείο A[i] θέτοντας A[i]=null. Πιστεύετε ότι μπορούμε να υποστηρίξουμε ταυτόχρονα Εισαγωγή και «Τυφλή ιαγραφή» σε χρόνο O(1) με χρήση ενός μόνο πίνακα? Με χρήση 2 πινάκων? Δομές Δεδομένων, 3ο Εξάμηνο 38

Πρόβλημα 2: Πιο Αποδοτικοί Πίνακες Δομές Δεδομένων, 3ο Εξάμηνο 39

Πρόβλημα 3: Κατασκευή Ομοιόμορφα Τυχαίας Μετάθεσης Να περιγραφεί αλγόριθμος (πρόγραμμα) που, δεδομένου ενός πίνακα X, με n στοιχεία, υπολογίζει έναν πίνακα A με τα ίδια στοιχεία τοποθετημένα σε τυχαία διάταξη, επιλεγμένη από την ομοιόμορφη κατανομή. ηλαδή, ο αλγόριθμος να παράγει οποιαδήποτε από τις n! υνατές μεταθέσεις των στοιχείων με πιθανότητα 1/n!. Δομές Δεδομένων, 3ο Εξάμηνο 40

Δομές Δεδομένων, 3ο Εξάμηνο 41

Δομές Δεδομένων, 3ο Εξάμηνο 42

Ανάλυση Κατασκευής Ομοιόμορφα Τυχαίας Μετάθεσης Οποιοδήποτε στοιχείο a: Επιλέγεται στην 1 η επανάληψη με πιθανότητα 1/n. εν επιλέγεται μέχρι και την 1η επανάληψη με πιθανότητα 1-1/n = (n-1)/n. Επιλέγεται στη 2 η επανάληψη με πιθανότητα εν επιλέγεται μέχρι και την 2η επανάληψη με πιθανότητα: Δομές Δεδομένων, 3ο Εξάμηνο 43

Ανάλυση Κατασκευής Ομοιόμορφα Τυχαίας Μετάθεσης Οποιοδήποτε στοιχείο a: Επιλέγεται στην i-οστή επανάληψη με πιθανότητα 1/n. εν επιλέγεται μέχρι και την i-οστή επανάληψη με πιθανότητα (n-i)/n. Άρα η πιθανότητα να βρεθεί ένα στοιχείο στη θέση i του A είναι 1/n. Δομές Δεδομένων, 3ο Εξάμηνο 44

Ανάλυση Κατασκευής Ομοιόμορφα Τυχαίας Μετάθεσης εδομένου ότι καταλήφθηκε η πρώτη θέση από ένα στοιχείο a, ποιά είναι η πιθανότητα να βρεθεί ένα στοιχείο a <>a σε κάποια από τις επόμενες θέσεις? Επαναλαμβάνουμε την ίδια ακριβώς ανάλυση για τις εναπομείνασες (n-1) θέσεις και βρίσκουμε ότι είναι 1/(n-1). Γενίκευση του επιχειρήματος: εδομένου ότι καταλήφθηκαν οι πρώτες k θέσεις από ένα υποσύνολο στοιχείων K, ποιά είναι η πιθανότητα να βρεθεί ένα στοιχείο a εκτός των K σε κάποια από τις επόμενες n-k θέσεις? Επαναλαμβάνουμε την ίδια ακριβώς ανάλυση για τις εναπομείνασες n-k θέσεις και βρίσκουμε ότι είναι 1/(n-k). Δομές Δεδομένων, 3ο Εξάμηνο 45

Ανάλυση Κατασκευής Ομοιόμορφα Τυχαίας Μετάθεσης Επομένως, ο αλγόριθμος επιστρέφει οποιαδήποτε δυνατή διάταξη με πιθανότητα: Δομές Δεδομένων, 3ο Εξάμηνο 46

Πρόβλημα 4: Τυχαιοποίση Αναζήτησης Έστω ότι θέλουμε να κατασκευάσουμε έναν πίνακα για την αποθήκευση n στοιχείων, για να υποστηρίξουμε την αναζήτηση της θέσης οποιουδήποτε από τα n στοιχεία στον πίνακα. ε γνωρίζουμε πιο στοιχείο θα αναζητηθεί. Πώς θα τοποθετήσουμε τα n στοιχεία στον πίνακα τυχαία, ώστε να ελαχιστοποιήσουμε το (ακριβές) μέσο πλήθος συγκρίσεων μιας αναζήτησης? Δομές Δεδομένων, 3ο Εξάμηνο 47

Προβλημα 4: Τυχαιοποίηση Αναζήτησης Επιλέγουμε τυχαία και ομοιόμορφα μια μετάθεση των n στοιχείων, από 1 x 2 x 3 x x n = n! μεταθέσεις. Κάθε μία μπορεί να επιλεγεί με πιθανότητα 1/n!. Έστω η αναζήτηση του στοιχείου a στον πίνακα A. Έστω A(i) το σύνολο των μεταθέσεων των στοιχείων, στις οποίες το a βρίσκεται στην i-οστή θέση του A. Το a είναι στην i-οστή θέση του A με πιθανότητα: Δομές Δεδομένων, 3ο Εξάμηνο 48

Πρόβλημα 4: Τυχαιοποίηση Αναζήτησης Αν T(a) είναι οι συγκρίσεις που απαιτούνται για την εύρεση του a: Δομές Δεδομένων, 3ο Εξάμηνο 49