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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ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

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

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

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

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

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

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

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

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

JDSL Java Data Structures Library

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

Στοιχειώδεις Δομές Δεδομένων

Δομές Δεδομένων Εργαστηριακή Άσκηση Γκόγκος Νίκος Α.Μ.: 4973 Έτος: 3 ο gkogkos@ceid.upatras.gr. Εισαγωγικά:

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

Transcript:

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

Πίνακες (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 21, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 13

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

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

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

October 21, 2016 Δομές Δεδομένων, 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 21, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 29

October 21, 2016 Δομές Δεδομένων, 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