Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων"

Transcript

1 Κεφάλαιο 1 Εισαγωγή Περιεχόμενα 1.1 Αλγόριθμοι και Δομές Δεδομένων Διατήρηση Διατεταγμένου Συνόλου Ολοκληρωμένη Υλοποίηση σε Java Ασκήσεις Βιβλιογραφία Αλγόριθμοι και Δομές Δεδομένων «Αλγόριθμος» είναι μια λέξη που συναντάμε πλέον πολύ συχνά, σε διάφορες δραστηριότητες της καθημερινής ζωής. Φυσικά αυτό αποτελεί μια φυσιολογική συνέπεια της εισβολής των υπολογιστικών συσκευών τις οποίες χρησιμοποιούμε για πολύ απλές έως και πολύ σύνθετες εργασίες. Τυπικά, ένας αλγόριθμος είναι μια μέθοδος επίλυσης ενός προβλήματος η οποία διέπεται από τα ακόλουθα χαρακτηριστικά: 1. Είσοδος-έξοδος: ο αλγόριθμος λαμβάνει δεδομένα εισόδου με βάση τα οποία υπολογίζει δεδομένα εξόδου. 2. Ακρίβεια: κάθε βήμα του αλγόριθμου είναι καλά ορισμένο. 3. Μοναδικότητα: τα αποτελέσματα που παράγει κάθε βήμα καθορίζονται με μοναδικό τρόπο. 4. Πεπερασμένο πλήθος βημάτων: ο αλγόριθμος κάποια στιγμή τερματίζει την εκτέλεση του. Το δεύτερο χαρακτηριστικό, από τα παραπάνω, εξασφαλίζει ότι δεν υπάρχει καμία ασάφεια στην ερμηνεία του κάθε βήματος του αλγόριθμου, ενώ το τρίτο εξασφαλίζει ότι τα αποτελέσματα που υπολογίζει ο αλγόριθμος σε κάθε βήμα εξαρτώνται μόνο από τα δεδομένα εισόδου και από τα αποτελέσματα που έχει υπολογίσει σε προηγούμενα βήματα. Με τον όρο δεδομένα αναφερόμαστε σε ένα σύνολο από πληροφορίες οι οποίες αποθηκεύονται στον υπολογιστή για τη λύση ενός προβλήματος. Μια «δομή δεδομένων» προσφέρει στον αλγόριθμο μεθόδους αποθήκευσης και επεξεργασίας των δεδομένων, έτσι ώστε να συμβάλλει στην κατά το δυνατό πιο αποδοτική εκτέλεση του αλγόριθμου. Κάθε πρόγραμμα εκτελεί έναν αλγόριθμο και χρησιμοποιεί ορισμένες δομές δεδομένων, γεγονός που εκφράζεται από την «εξίσωση» του Niklaus Wirth: Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα 9

2 Η περιγραφή ενός αλγόριθμου μπορεί να γίνει με διάφορους τρόπους, όπως με φυσική γλώσσα, με διάγραμμα ροής, με ψευδο-κώδικα ή με κώδικα σε κάποια γλώσσα προγραμματισμού όπως η Java. Ας θεωρήσουμε το πρόβλημα του υπολογισμού του μέγιστου κοινού διαιρέτη (ΜΚΔ) δύο μη αρνητικών ακέραιων. Ήδη πριν από το 300π.Χ. ήταν γνωστός ένας αλγόριθμος υπολογισμού του μέγιστου κοινού διαιρέτη: ο αλγόριθμος του Ευκλείδη. Έστω a και b δύο μη αρνητικοί ακέραιοι, όπου b 0. Η ακέραιη διαίρεση του a με τον b δίνει ένα πηλίκο q και ένα υπόλοιπο r, τέτοια ώστε a = qb + r και 0 r b 1. Για παράδειγμα, αν a=17 και b=6 τότε q=2 και r=5. Το πηλίκο της της ακέραιης διαίρεσης του a με τον b εκφράζει πόσες φορές μπορούμε να αφαιρέσουμε τον b από τον a και συμβολίζεται μαθηματικά ως a/b. Δηλαδή είναι ο μεγαλύτερος ακέραιος που είναι μικρότερος από το a/b. Το υπόλοιπο της ακέραιης διαίρεσης του a με τον b συμβολίζεται μαθηματικά με τη συνάρτηση mod, δηλαδή γράφουμε r = a mod b = a a/b b. Ο b διαιρεί (ακριβώς) τον a όταν a mod b = 0. Έτσι, ο μέγιστος κοινός διαιρέτης δύο ακέραιων x και y είναι ο μεγαλύτερος ακέραιος που διαιρεί και τον x και τον y. Για παράδειγμα, ΜΚΔ(12,8)=4. Ο αλγόριθμος του Ευκλείδη βασίζεται στην παρατήρηση για x y > 0, ο μέγιστος κοινός διαιρέτης των x και y είναι ίσος με το μέγιστο κοινό διαιρέτη του y και του υπόλοιπου της διαίρεσης του x με το y, δηλαδή ισχύει ο ακόλουθος αναδρομικός ορισμός ΜΚΔ(x, y) = ΜΚΔ(y, x mod y) ενώ, για κάθε ακέραιο x ισχύει ΜΚΔ(x, 0) = x. Έτσι, μπορούμε να υπολογίσουμε το ΜΚΔ(x,y) αντικαθιστώντας κάθε φορά το x με το y και το y με το x mod y, μέχρι να γίνει y=0, οπότε η απάντηση δίνεται από την τρέχουσα τιμή του x. Όπως διαπιστώνουμε πολύ συχνά, η διατύπωση ενός αλγόριθμου σε φυσική γλώσσα μπορεί να κρύβει ασάφειες ή αμφισημίες. Σε τέτοιες περιπτώσεις μπορεί να είναι πιο ενδεδειγμένη η χρήση κάποιου άλλου τρόπου περιγραφής του αλγόριθμου. Ας δούμε πρώτα πώς μπορούμε να περιγράψουμε τον αλγόριθμο του Ευκλείδη με ένα διάγραμμα ροής, όπως φαίνεται στην Εικόνα 1.1. Εικόνα 1.1: Διάγραμμα ροής για τον υπολογισμό του μέγιστου κοινού διαιρέτη με τον αλγόριθμο του Ευκλείδη 10

3 Μπορούμε να περιγράψουμε την αντίστοιχη διαδικασία με ψευδο-κώδικα, όπως φαίνεται παρακάτω. Αλγόριθμος του Ευκλείδη για τον υπολογισμό του Μέγιστου Κοινού Διαιρέτη (ΜΚΔ) Είσοδος: Μη αρνητικοί ακέραιοι x και y με x y. Έξοδος: Μέγιστος κοινός διαιρέτης των x και y. ΜΚΔ(x,y) 1. ενόσω y 0 2. υπολόγισε το υπόλοιπο της διαίρεσης του x με τον y, r=x mod y. 3. θέσε x=y και y=r. 4. επίστρεψε x. τέλος ΜΚΔ(x,y) Ας δούμε τώρα δύο υλοποιήσεις του αλγόριθμου του Ευκλείδη σε Java. Η πρώτη υλοποίηση, gcd1, ακολουθεί πιστά τα βήματα του παραπάνω ψευδο-κώδικα. static int gcd1(int x, int y) while (y!=0) int r = x % y; // υπόλοιπο ακέραιης διαίρεσης x = y; y = r; return x; Με τον προσδιορισμό static δηλώνουμε ότι η μέθοδος αφορά την κλάση η οποία την περιέχει, δηλαδή η gcd1 μπορεί να χρησιμοποιηθεί, χωρίς να υπάρχει κάποιο αντικείμενο. Μια δεύτερη (ισοδύναμη) υλοποίηση του αλγόριθμου του Ευκλείδη, gcd2, χρησιμοποιεί απευθείας τον αναδρομικό ορισμό του μέγιστου κοινού διαιρέτη. Έτσι, λαμβάνουμε το ακόλουθο αναδρομικό αλγόριθμο. static int gcd2(int x, int y) if (y==0) return x; return gcd2(y, x % y); Ένας αναδρομικός αλγόριθμος επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Η αναδρομή αποτελεί μια από τις βασικές τεχνικές σχεδίασης αλγορίθμων, την οποία μελετάμε πιο αναλυτικά στο Κεφάλαιο 2. Για να χρησιμοποιήσουμε τις παραπάνω μεθόδους, δημιουργούμε μια κλάση GCD, η οποία περιλαμβάνει τις μεθόδους gcd1 και η gcd2 και την οποία αποθηκεύουμε σε ένα αρχείο Java με το όνομα της κλάσης, δηλαδή GCD.java. public class GCD /* υπολογισμός του μέγιστου κοινού διαιρέτη δύο ακέραιων */ public static int gcd1(int x, int y) while (y!=0) 11

4 int r = x % y; // υπόλοιπο ακέραιης διαίρεσης x = y; y = r; return x; /* αναδρομικός υπολογισμός του μέγιστου κοινού διαιρέτη δύο ακέραιων */ static int gcd2(int x, int y) if (y==0) return x; return gcd2(y, x % y); public static void main(string args[]) int x = Integer.parseInt(args[0]); int y = Integer.parseInt(args[1]); System.out.println("gcd1 = " + gcd1(x,y)); System.out.println("gcd2 = " + gcd2(x,y)); Η μεταγλώττιση του προγράμματος γίνεται με την εντολή javac GCD.java Στο παραπάνω πρόγραμμα, η κλήση των μεθόδων gcd1 και gcd2 γίνεται από τη main μέθοδο της κλάσης. Οι τιμές των ακέραιων x και y δίνονται από τη γραμμή εντολών. Για παράδειγμα, για να υπολογίσουμε το ΜΚΔ(12,8) γράφουμε java GCD 12 8 Το πρόγραμμα υπολογισμού του μέγιστου κοινού διαιρέτη είναι αρκετά απλό, ώστε να μην έχει ανάγκη να οργανώνει τα δεδομένα με κάποιο αποδοτικό τρόπο. Αρκούν μερικές μεταβλητές (τύπου int), για να αποθηκεύσει όλες τις απαιτούμενες πληροφορίες. Όταν έχουμε να διαχειριστούμε ένα μεγαλύτερο όγκο δεδομένων, τότε χρειαζόμαστε τη συμβολή μιας ή περισσότερων δομών δεδομένων. Από την οπτική γωνία ενός προγράμματος-χρήστη, η δομή δεδομένων υλοποιεί ένα αφηρημένο τύπο δεδομένων. Για να γίνει σαφής η παραπάνω διάκριση, στην επόμενη ενότητα μελετάμε το πρόβλημα της διατήρησης ενός διατεταγμένου συνόλου. 1.2 Διατήρηση Διατεταγμένου Συνόλου Με τον όρο «διατεταγμένο σύνολο» αναφερόμαστε σε ένα σύνολο στοιχείων τα οποία έχουν μια ολική διάταξη, δηλαδή υπάρχει ένα πρώτο στοιχείο του συνόλου, ένα δεύτερο, ένα τρίτο, κ.ο.κ. Ισοδύναμα, για κάθε δύο στοιχεία x και y του συνόλου, μπορούμε να ελέγξουμε αν το x προηγείται του y στη διάταξη. Έστω S ένα διατεταγμένο σύνολο. Ορίζουμε την τάξη ενός στοιχείου x S ως το πλήθος των στοιχείων που είναι μικρότερα του S. Για απλότητα θα θεωρήσουμε ότι το S είναι ένα σύνολο κατά τη μαθηματική έννοια, δηλαδή δεν περιέχει πολλαπλές εμφανίσεις του ίδιου στοιχείου. Με αυτήν την προϋπόθεση, η τάξη κάθε στοιχείου του S ορίζεται με μοναδικό τρόπο. 12

5 Ας υποθέσουμε τώρα ότι θέλουμε να υλοποιήσουμε ένα πρόγραμμα το οποίο χειρίζεται ένα τέτοιο διατεταγμένο σύνολο S, προκειμένου να εκτελεί κάποια στατιστική επεξεργασία των τιμών του. Για το σκοπό αυτό, το πρόγραμμα μας πρέπει να έχει τη δυνατότητα, ανά πάσα στιγμή, να εισάγει νέα στοιχεία στο S, καθώς και να βρίσκει το στοιχείο που έχει μια δεδομένη τάξη r στο τρέχον σύνολο S. Μια καλή προγραμματιστική τεχνική είναι να αναθέσουμε τη διαχείριση του συνόλου S σε μια κατάλληλη δομή δεδομένων. Η καταλληλότητα της δομής καθορίζεται από το σύνολο των λειτουργιών τις οποίες πρέπει να επιτελεί πάνω στο S. Για το πρόγραμμά μας χρειαζόμαστε μια δομή η οποία υποστηρίζει τις παρακάτω λειτουργίες: κατασκευή() : Επιστρέφει ένα κενό σύνολο S. εισαγωγή(x) : Εισάγει στο S ένα νέο στοιχείο x. επιλογή(j) : Επιστρέφει το j-οστό μικρότερο στοιχείο του S. Με μια πρώτη ματιά, η σχεδίαση μιας δομής δεδομένων που υποστηρίζει το παραπάνω ρεπερτόριο λειτουργιών μπορεί να φαίνεται αρκετά απλή υπόθεση. Ωστόσο, αν θέλουμε να πετύχουμε καλή απόδοση τόσο στην εκτέλεση της εισαγωγής όσο και της επιλογής, έτσι ώστε να μην είναι απαραίτητο να εξετάζουμε πολλές θέσεις του πίνακα κάθε φορά που εκτελούμε μια από αυτές τις λειτουργίες, θα πρέπει να χρησιμοποιήσουμε μια από τις πιο προηγμένες δομές τις οποίες θα συναντήσουμε στα επόμενα κεφάλαια. Εδώ θα αρκεστούμε σε μια απλοϊκή λύση, η οποία διατηρεί τα στοιχεία του συνόλου S σε ένα πίνακα A. Μια αρχική ιδέα είναι να τοποθετούμε τους ακέραιους, κατά τη σειρά εισαγωγής τους, στον πίνακα Α. Με αυτόν τον τρόπο, το πρώτο στοιχείο που έχει εισαχθεί στο S βρίσκεται στη θέση Α[0], το δεύτερο στη θέση Α[1], κ.ο.κ. Όπως, όμως, γίνεται εύκολα αντιληπτό, με αυτή τη δομή δεν μπορούμε να εντοπίσουμε άμεσα, για οποιοδήποτε τιμή του j, το j-οστό μικρότερο στοιχείο του S. Κάτι τέτοιο φαίνεται να απαιτεί την ταξινόμηση των στοιχείων του S, οπότε μια εύλογη επιλογή είναι να διατηρούμε τον πίνακα Α διατεταγμένο καθώς εισάγουμε νέα στοιχεία. Εδώ θα πρέπει να σημειώσουμε ότι στη βιβλιογραφία έχουν προταθεί αλγόριθμοι οι οποίοι μπορούν να βρίσκουν το j-οστό μικρότερο στοιχείο ενός συνόλου S, χωρίς να εκτελούν ταξινόμηση του. Ωστόσο, αυτοί οι αλγόριθμοι είναι πιο κατάλληλοι, όταν έχουμε να επιλέξουμε λίγα στοιχεία από το S. Στην περίπτωση μας, η δομή δεδομένων πρέπει να υποστηρίζει αποδοτικά την εκτέλεση ενός αυθαίρετου πλήθους λειτουργιών επιλογής. Καταλήγουμε, λοιπόν, στην εξής λύση. Αποθηκεύουμε τα στοιχεία του S, κατά αύξουσα σειρά, σε ένα πίνακα Α. Έτσι, αν το S έχει n στοιχεία, έχουμε Α[0] < Α[1] < < Α[n 1]. Για απλότητα, θα θεωρήσουμε ότι το σύνολο S περιέχει μόνο ακέραιους (int) και θα αναπτύξουμε μια ενδεικτική υλοποίηση SortedIntArray με την ακόλουθη διασύνδεση. class SortedIntArray SortedIntArray(int N); void insert(item); int select(int j); // διατεταγμένος πίνακας ακέραιων // αρχικοποίηση πίνακα N θέσεων // εισαγωγή αντικειμένου στη συλλογή // επιλογή j-οστού μικρότερου στοιχείου Στην κλάση SortedIntArray, εκτός από τον πίνακα ακεραίων Α, χρησιμοποιούμε μια μεταβλητή n, η οποία διατηρεί το πλήθος των στοιχείων που έχουν εισαχθεί στον πίνακα Α. Στην υλοποίησή μας, ο κατασκευαστής της κλάσης δέχεται ως όρισμα το μέγεθος Ν του πίνακα 13

6 που θα δημιουργήσει και δεσμεύει χώρο για πίνακα N θέσεων. Επίσης, καθώς ακόμα δεν έχει εισαχθεί κανένα στοιχείο, θέτει n=0. class SortedIntArray int A[]; int n; // αρχικοποίηση πίνακα N θέσεων SortedIntArray(int N) A = new int[n]; n = 0; Εφόσον διατηρούμε στον πίνακα Α τα στοιχεία του S διατεταγμένα κατά αύξουσα σειρά, για τη λειτουργία επιλογή(j) χρειάζεται μόνο να επιστρέψουμε την τιμή A[j-1]. Έτσι, για την κλάση SortedIntArray, προσθέτουμε την παρακάτω μέθοδο. /* επιλογή j-οστού μικρότερου στοιχείου */ int select(int j) return A[j-1]; Ας εξετάσουμε τώρα την εισαγωγή ενός νέου στοιχείου x στο σύνολο S. To στοιχείο αυτό θα πρέπει να τοποθετηθεί σε κατάλληλη θέση, ώστε να διατηρηθεί η διάταξη του πίνακα. Στη γενική περίπτωση, πρέπει να βρούμε τη θέση i του πίνακα για την οποία ισχύει Α[i 1] < x < Α[i]. Στη συνέχεια, πρέπει να δημιουργήσουμε χώρο, για να τοποθετηθεί το x στη θέση A[i], όπως φαίνεται στην Εικόνα 1.2: Εισαγωγή στοιχείου σε διατεταγμένο πίνακα. Για αυτό το σκοπό, μετακινούμε τα στοιχεία των θέσεων Α[i], Α[i+1],, Α[n-1] κατά μια θέση δεξιά και θέτουμε Α[i]=x. Η διαδικασία αυτή συμπεριλαμβάνει τις δύο ακραίες περιπτώσεις, όταν το x είναι μικρότερο από όλα τα στοιχεία του S ή όταν είναι μεγαλύτερο από όλα τα στοιχεία του S, αν θεωρήσουμε, κατά σύμβαση, ότι Α[ 1] = και Α[n] = +. Εικόνα 1.2: Εισαγωγή στοιχείου σε διατεταγμένο πίνακα Στον ψευδο-κώδικα που ακολουθεί περιγράφουμε αναλυτικά τα βήματα του παραπάνω αλγόριθμου. Παρατηρήστε ότι στη γραμμή 4 ελέγχουμε αν το στοιχείο x υπάρχει ήδη αποθηκευμένο στον πίνακα Α. Σε αυτή την περίπτωση, αφήνουμε τον Α ως έχει, αφού κάναμε την παραδοχή ότι στο σύνολο S δεν μπορούμε να έχουμε πολλαπλές εμφανίσεις του ίδιου στοιχείου. 14

7 Αλγόριθμος εισαγωγής στοιχείου σε πίνακα ταξινομημένο σε αύξουσα σειρά Είσοδος: Πίνακας Α, ταξινομημένος σε αύξουσα σειρά, με τα στοιχεία ενός συνόλου S και ένα νέο στοιχείο x. Έξοδος: Πίνακας Α, ταξινομημένος σε αύξουσα σειρά με τα στοιχεία του συνόλου S x. 1. θέσε n = πλήθος στοιχείων στον πίνακα Α 2. βρες την πρώτη θέση i, 0 i n 1, για την οποία A[i] x 3. αν δεν υπάρχει τέτοια θέση, τότε θέσε i=n 4. αλλιώς, αν A[i]=x, επίστρεψε Α 5. για j=n-1 έως i κάνε 6. θέσε A[j+1]=A[j] 7. θέσε A[i]=x 8. επίστρεψε A τέλος Μια υλοποίηση του αλγόριθμου εισαγωγής για την κλάση SortedIntArray δίνεται παρακάτω. /* εισαγωγή ακέραιου x σε διατεταγμένο πίνακα */ void insert(int x) int i; // εύρεση της θέσης εισαγωγής i for (i=0; i<n; i++) if (A[i] >= x) break; // αν το x υπάρχει ήδη, τότε ο πίνακας Α μένει ως έχει if (A[i]==x) return; // μετακίνηση στοιχείων από τη θέση i και μετά κατά μια θέση δεξιά for (int j=n-1; j>=i; j--) A[j+1] = A[j]; A[i]=x; n++; 1.3 Ολοκληρωμένη Υλοποίηση σε Java Η υλοποίηση της κλάσης SortedIntArray την οποία δώσαμε στην προηγούμενη ενότητα, δεν είναι ολοκληρωμένη, καθώς δεν προβλέπει τι συμβαίνει στις ακόλουθες περιπτώσεις: 1. Όταν εκτελούμε την εισαγωγή ενός νέου στοιχείου, αλλά ο πίνακας Α είναι ήδη γεμάτος (n==n). 2. Όταν σε μια λειτουργία επιλογή(j) ζητούμε ένα στοιχείο που δεν υπάρχει στον πίνακα, δηλαδή όταν j<1 ή j>n. Σε αυτές τις περιπτώσεις, η κλήση των αντίστοιχων μεθόδων, insert και select, της κλάσης SortedIntArray θα έχει ως αποτέλεσμα τον τερματισμό του προγράμματος λόγω σφάλματος κατά το χρόνο εκτέλεσης. Τέτοιες περιπτώσεις μπορεί να μην είναι δυνατό να συμβούν σε ένα 15

8 πρόγραμμα που κάνει σωστή χρήση της δομής διατεταγμένου πίνακα, ωστόσο η υλοποίησή μας θα πρέπει να προβλέπει τέτοια πιθανά σφάλματα. Για την αντιμετώπιση του πρώτου προβλήματος, μια επιλογή είναι απλώς να ενημερώνουμε το χρήστη ότι η δομή του διατεταγμένου πίνακα είναι γεμάτη. Αυτή η λύση δεν είναι πάντοτε ενδεδειγμένη, καθώς συχνά δεν μπορούμε να έχουμε μια καλή εκτίμηση του μεγέθους ενός συνόλου στοιχειών που πρέπει να επεξεργαστούμε. Έτσι, εναλλακτικά, μπορούμε να δεσμεύσουμε ένα μεγαλύτερο πίνακα T για το σύνολο μας, το οποίο χρησιμοποιούμε στη θέση του παλαιότερου πίνακα A. Μετά τη δημιουργία του νέου πίνακα T, θα πρέπει να αντιγράψουμε εκεί όλα τα στοιχεία του Α. Για να αποφύγουμε το ενδεχόμενο να γίνεται μια τέτοια μετακίνηση στοιχείων πολύ συχνά, πρέπει να επιλέξουμε το μέγεθος του νέου πίνακα να είναι αρκετά μεγάλο, έτσι ώστε να χρειαστούν αρκετές εισαγωγές μέχρι να γεμίσει. Μια τυπική επιλογή είναι να θέσουμε το μέγεθος του T να είναι διπλάσιο από το μέγεθος του A. Ένα τέτοιο παράδειγμα φαίνεται στην Εικόνα 1.3. Εικόνα 1.3: Εισαγωγή στοιχείου σε δυναμικό πίνακα. Αν ο πίνακας είναι γεμάτος πριν από την εισαγωγή του νέου στοιχείου, τότε δεσμεύουμε ένα νέο πίνακα μεγαλύτερου μεγέθους (τυπικά με διπλάσιο μέγεθος από το αρχικό) στον οποίο αντιγράφουμε όλα τα στοιχεία του αρχικού πίνακα. Στη συνέχεια, μπορούμε να εκτελέσουμε τη διαδικασία εισαγωγής χωρίς πρόβλημα. Στην υλοποίηση της κλάσης SortedIntArray προσθέτουμε την παρακάτω μέθοδο η οποία πραγματοποιεί την αλλαγή του μεγέθους του πίνακα Α. // αλλαγή μεγέθους του πίνακα Α private void resize(int M) int[] temp = new int[m]; for (int i = 0; i < n; i++) temp[i] = A[i]; A = temp; Τώρα μπορούμε να τροποποιήσουμε τη μέθοδο εισαγωγής, έτσι ώστε να ελέγχει πρώτα αν ο πίνακας A είναι ήδη γεμάτος. Σε αυτήν την περίπτωση, καλούμε τη μέθοδο resize, για να δεσμεύσουμε ένα νέο πίνακα Τ, με διπλάσιο μέγεθος, στον οποίο αντιγράφουμε τα στοιχεία του πίνακα Α. Τέλος, κάνουμε την αναφορά στον πίνακα Α να δείχνει στον πίνακα Τ. Με αυτόν τον τρόπο, αντικαθιστούμε τον παλιό πίνακα Α της δομής μας με ένα νέο πίνακα διπλάσιου μεγέθους. 16

9 void insert(int x) // έλεγχος αν ο πίνακας είναι γεμάτος if (n == A.length) resize(2*a.length); // διπλασιασμός του πίνακα Α int i; // εύρεση της θέσης εισαγωγής i for (i=0; i<n; i++) if (A[i] >= x) break; // αν το x υπάρχει ήδη, τότε ο πίνακας Α μένει ως έχει if (A[i]==x) return; // μετακίνηση στοιχείων από τη θέση i και μετά κατά μια θέση δεξιά for (int j=n-1; j>=i; j--) A[j+1] = A[j]; A[i]=x; n++; Στη συνέχεια, πρέπει να αντιμετωπίσουμε και τη δεύτερη προβληματική περίπτωση, η οποία προκύπτει, όταν καλούμε τη λειτουργία επιλογή(j) για j<1 ή j>n. Μπορούμε να χειριστούμε μια τέτοια περίπτωση με το μηχανισμό εξαιρέσεων της Java, όπως φαίνεται στον παρακάτω κώδικα. int select(int j) if ( (j<=0) (j>=n) ) throw new NoSuchElementException("Bad index " + j); return A[j-1]; Οι εξαιρέσεις (exceptions) στη Java είναι αντικείμενα που ενεργοποιούνται σε περίπτωση μη αναμενόμενης λειτουργίας του προγράμματος. Ένα τέτοιο παράδειγμα είναι η κλήση της μεθόδου select(j), όταν η τιμή της παραμέτρου j είναι εκτός των ορίων του πίνακα Α. Σε αυτή την περίπτωση, στην υλοποίηση μας, η μέθοδος select μεταβιβάζει μια εξαίρεση τύπου NoSuchElementException. Για πληρότητα, δίνουμε την ολοκληρωμένη υλοποίηση σε Java. class SortedIntArray int A[]; int n; SortedIntArray(int N) A = new int[n]; n = 0; private void resize(int M) int[] temp = new int[m]; for (int i = 0; i < n; i++) temp[i] = A[i]; 17

10 A = temp; void insert(int x) if (n == A.length) resize(2*a.length); int i; for (i = 0; i < n; i++) if (A[i] >= x) break; if (A[i]==x) return; for (int j = n - 1; j >= i; j--) A[j + 1] = A[j]; A[i] = k; n++; int select(int j) if ( (j<=0) (j>=n) ) throw new NoSuchElementException("Error"); return A[j-1]; Στα επόμενα κεφάλαια θα παραλείψουμε την περιγραφή χρήσης παρόμοιων ελέγχων, παρόλο που, όπως προαναφέραμε, είναι απολύτως απαραίτητοι για τη δημιουργία ενός ολοκληρωμένου κώδικα. Η παράλειψη των ελέγχων, ωστόσο, θα μας βοηθήσει να επικεντρωθούμε στα κύρια σημεία ανάπτυξης της εκάστοτε δομής δεδομένων, που θα μελετήσουμε στη συνέχεια. Ασκήσεις 1.1 Οι αριθμοί Fibonacci F 1, F 2,, ορίζονται από την αναδρομική σχέση F k = F k 1 + F k 2, για k 3, ενώ F 1 = F 2 = 1. Έτσι, έχουμε F 3 = 2, F 4 = 3, F 5 = 5 κλπ. Πόσες επαναλήψεις πραγματοποιεί ο αλγόριθμος του Ευκλείδη με είσοδο x = F k και y = F k 1 ; 1.2 Υλοποιήστε στην κλάση SortedIntArray την παρακάτω λειτουργία τάξη(k) : Αναζητά τον ακέραιο k στο διατεταγμένο πίνακα A. Αν βρεθεί τότε επιστρέφει τη θέση i του k στον πίνακα A, δηλαδή έχουμε Α[i]=k. Διαφορετικά, επιστρέφει την τιμή Υλοποιήστε στην κλάση SortedIntArray έναν κατασκευαστή SortedIntArray(int[] Β), ο οποίος δέχεται ως όρισμα ένα μη διατεταγμένο πίνακα Β. Ο κατασκευαστής θα πρέπει να αρχικοποιήσει το διατεταγμένο πίνακα Α με τους ακέραιους του Β. 1.4 Υλοποιήστε στην κλάση SortedIntArray την παρακάτω λειτουργία: 18

11 διαγραφή(k) : Διαγράφει τον ακέραιο k από το διατεταγμένο πίνακα A. 1.5 Σκεφτείτε τι θα συμβεί, αν στη μέθοδο insert της κλάσης SortedIntArray αντικαταστήσουμε τις γραμμές του κώδικα με if (n == A.length) resize(2*a.length); if (n == A.length) resize(a.length+1); Συγκρίνετε πειραματικά την απόδοση των δύο αντίστοιχων υλοποιήσεων. Βιβλιογραφία Goodrich, M. T., & Tamassia, R. (2006). Data Structures and Algorithms in Java, 4th edition. Wiley. Savitch, W. (2008). Απόλυτη Java. Ίων. Sedgewick, R., & Wayne, K. (2011). Algorithms, 4th edition. Addison-Wesley. Wirth, N. (1985). Algorithms and data structures. Prentice Hall. 19

ΛΟΥΚΑΣ ΓΕΩΡΓΙΑΔΗΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΑΥΡΟΣ Δ. ΝΙΚΟΛΟΠΟΥΛΟΣ ΚΑΘΗΓΗΤΗΣ ΛΕΩΝΙΔΑΣ ΠΑΛΗΟΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΛΟΥΚΑΣ ΓΕΩΡΓΙΑΔΗΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΑΥΡΟΣ Δ. ΝΙΚΟΛΟΠΟΥΛΟΣ ΚΑΘΗΓΗΤΗΣ ΛΕΩΝΙΔΑΣ ΠΑΛΗΟΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΛΟΥΚΑΣ ΓΕΩΡΓΙΑΔΗΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΑΥΡΟΣ Δ. ΝΙΚΟΛΟΠΟΥΛΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΛΕΩΝΙΔΑΣ ΠΑΛΗΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Διαβάστε περισσότερα

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

Κεφάλαιο 6 Ουρές Προτεραιότητας Κεφάλαιο 6 Ουρές Προτεραιότητας Περιεχόμενα 6.1 Ο αφηρημένος τύπος δεδομένων ουράς προτεραιότητας... 114 6.2 Ουρές προτεραιότητας με στοιχειώδεις δομές δεδομένων... 115 6.3 Δυαδικός σωρός... 116 6.3.1

Διαβάστε περισσότερα

Κεφάλαιο 10 Ψηφιακά Λεξικά

Κεφάλαιο 10 Ψηφιακά Λεξικά Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...

Διαβάστε περισσότερα

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

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

Διαβάστε περισσότερα

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

Διαβάστε περισσότερα

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

Διαβάστε περισσότερα

Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων

Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων Περιεχόμενα 3.1 Στοιχειώδεις τύποι δεδομένων... 39 3.2 Πίνακες... 40 3.2.1 Διδιάστατοι πίνακες... 43 3.3 Συνδεδεμένες Λίστες... 48 3.4 Αναδρομή... 51 3.4.1 Μέθοδος

Διαβάστε περισσότερα

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Υπολογιστικά & Διακριτά Μαθηματικά

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

Διαβάστε περισσότερα

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

Διαβάστε περισσότερα

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

Στοιχειώδεις Δομές Δεδομένων Στοιχειώδεις Δομές Δεδομένων Τύποι δεδομένων στη Java Ακέραιοι (int, long) Αριθμοί κινητής υποδιαστολής (float, double) Χαρακτήρες (char) Δυαδικοί (boolean) Από τους παραπάνω μπορούμε να φτιάξουμε σύνθετους

Διαβάστε περισσότερα

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΟΙΝΟΥ ΔΙΑΙΡΕΤΗ

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΟΙΝΟΥ ΔΙΑΙΡΕΤΗ ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΟΙΝΟΥ ΔΙΑΙΡΕΤΗ Το πρόβλημα: Δεδομένα: δύο ακέραιοι a και b Ζητούμενο: ο μέγιστος ακέραιος που διαιρεί και τους δύο δοσμένους αριθμούς, γνωστός ως Μέγιστος Κοινός Διαιρέτης τους (Greatest

Διαβάστε περισσότερα

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

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης Περιεχόμενα 7.1 Ο αφηρημένος τύπος δεδομένων λεξικού... 133 7.1.1 Διατεταγμένα λεξικά... 134 7.2 Στοιχειώδεις υλοποιήσεις με πίνακες και λίστες... 135 7.2.1

Διαβάστε περισσότερα

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #3 2 Γενικά Στο Τετράδιο #3 του Εργαστηρίου θα εξοικειωθούμε με τη χρήση της εντολής πολλαπλής

Διαβάστε περισσότερα

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

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

Διαβάστε περισσότερα

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

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55 ΑΝΑ ΡΟΜΗ- ΑΣΚΗΣΕΙΣ Μια µέθοδος είναι αναδροµική όταν καλεί τον εαυτό της και έχει µια συνθήκη τερµατισµού π.χ. το παραγοντικό ενός αριθµού Ν, µπορεί να καλεί το παραγοντικό του αριθµού Ν-1 το παραγοντικό

Διαβάστε περισσότερα

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

Προγραμματιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές Τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωμύλος Κορακίτης

Διαβάστε περισσότερα

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

Διαβάστε περισσότερα

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη 0. Εισαγωγή Αντικείμενο μαθήματος: Η θεωρητική μελέτη ανάλυσης των αλγορίθμων. Στόχος: επιδόσεις των επαναληπτικών και αναδρομικών αλγορίθμων.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr

Δομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που

Διαβάστε περισσότερα

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ.

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ. Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ. Σάλαρης Πολλές φορές μας δίνεται να λύσουμε ένα πρόβλημα που από την πρώτη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

Διαβάστε περισσότερα

Συλλογές, Στοίβες και Ουρές

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

Διαβάστε περισσότερα

Εργαστηριακή Άσκηση 1

Εργαστηριακή Άσκηση 1 Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε

Διαβάστε περισσότερα

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

Διαβάστε περισσότερα

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

Προγραμματιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές Τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ Επικ. Καθηγητής ΕΜΠ v.vescoukis@cs.ntua.gr

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

Διαβάστε περισσότερα

Κατακερματισμός (Hashing)

Κατακερματισμός (Hashing) Κατακερματισμός (Hashing) O κατακερματισμός είναι μια τεχνική οργάνωσης ενός αρχείου. Είναι αρκετά δημοφιλής μέθοδος για την οργάνωση αρχείων Βάσεων Δεδομένων, καθώς βοηθάει σημαντικά στην γρήγορη αναζήτηση

Διαβάστε περισσότερα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 1: Εισαγωγή Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 5ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 Η ΕΝΤΟΛΗ for Με την εντολή for δημιουργούμε βρόχους επανάληψης σε

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays) ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008 Πίνακες (Arrays) 1-D 0 1 2 2-D 3-D 0 0 1 1 2 2 3 3 array[3][2] array[0][1] Γενική δήλωση πίνακα: τύπος_στοιχείων [ ] όνομα = new τύπος_στοιχείων [μήκος]; // 1-D και φυσικά

Διαβάστε περισσότερα

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου Συμπίεση Η συμπίεση δεδομένων ελαττώνει το μέγεθος ενός αρχείου : Εξοικονόμηση αποθηκευτικού χώρου Εξοικονόμηση χρόνου μετάδοσης Τα περισσότερα αρχεία έχουν πλεονασμό στα δεδομένα τους Είναι σημαντική

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο 3.07 Να γραφεί αλγόριθμος που θα δημιουργεί πίνακα 100 θέσεων στον οποίο τα περιττά στοιχεία του θα έχουν την τιμή 1 και τα άρτια την τιμή 0. ΛΥΣΗ Θα δημιουργήσω άσκηση βάση κάποιων κριτηρίων. Δηλ. δεν

Διαβάστε περισσότερα

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης: Α. SelectoSort Ταξινόμηση με Επιλογή Β. IsertoSort Ταξινόμηση με Εισαγωγή Γ. MergeSort

Διαβάστε περισσότερα

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

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ231: ομές εδομένων και Αλγόριθμοι ιδάσκων: Γιώργος Πάλλης Γραφείο: ΘΕΕ-01 Β119 Τηλέφωνο: 22-892743 E-mail: gpallis@cs.ucy.ac.cy Ιστοσελίδα Μαθήματος: http://www.cs.ucy.ac.cy/courses/epl231

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

Διαβάστε περισσότερα

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 10: Αριθμητική υπολοίπων - Κυκλικές ομάδες: Διαιρετότητα - Ευκλείδειος αλγόριθμος - Κατάλοιπα Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Εισαγωγή στην επιστήμη των Υπολογιστών & Τηλεπικοινωνιών Εισαγωγή στην επιστήμη των Υπολογιστών & Τηλεπικοινωνιών Λογισμικό Υπολογιστών Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προτεινόμενα Θέματα ΑΕΠΠ Προτεινόμενα Θέματα ΑΕΠΠ ΘΕΜΑ Α Α1. Να χαρακτηρίσετε αν κάθε μία από τις παρακάτω προτάσεις είναι σωστή (Σ) ή λανθασμένη (Λ). Αιτιολογήσετε κάθε σας απάντηση 1. Η μερικώς περιορισμένη εμβέλεια προσφέρει

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

Διαβάστε περισσότερα

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

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 1: Εισαγωγή Θεματική Ενότητα: Εισαγωγή στον Προγραμματισμό ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική

Διαβάστε περισσότερα

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

Διαβάστε περισσότερα

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

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

Διαβάστε περισσότερα

Αριθμοθεωρητικοί Αλγόριθμοι

Αριθμοθεωρητικοί Αλγόριθμοι Αλγόριθμοι που επεξεργάζονται μεγάλους ακέραιους αριθμούς Μέγεθος εισόδου: Αριθμός bits που απαιτούνται για την αναπαράσταση των ακεραίων. Έστω ότι ένας αλγόριθμος λαμβάνει ως είσοδο έναν ακέραιο Ο αλγόριθμος

Διαβάστε περισσότερα

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Προγραμματισμός 2 Σημειώσεις εργαστηρίου Προγραμματισμός 2 Σημειώσεις εργαστηρίου 02-Java, Τύποι Δεδομένων ως Αντικείμενα Νεβράντζας Βάιος-Γερμανός Λάρισα, Μάρτιος 2013 02-iProgramminginJava, Τυ ποι δεδομε νων ως Αντικει μενα, σελίδα 1 Περίληψη

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

Διαβάστε περισσότερα

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

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 3 Αλγόριθμοι Επιλογής Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Αλγόριθμοι Επιλογής Γνωρίζουμε

Διαβάστε περισσότερα

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου

Διαβάστε περισσότερα

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

Διαβάστε περισσότερα

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο Να περιγραφεί η δομή επανάληψης Αρχή_επανάληψης Μέχρις_ότου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο Να περιγραφεί η δομή επανάληψης Αρχή_επανάληψης Μέχρις_ότου 2.87 Να περιγραφεί η δομή επανάληψης Μέχρις_ότου Ημορφή της δομής επανάληψης Μέχρις_ότου είναι: Μέχρις_ότου Συνθήκη Η ομάδα εντολών στο εσωτερικό της επανάληψης, εκτελείται μέχρις ότου ισχύει η συνθήκη

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε: Συµβολισµός Ω( ) Τάξη των Συναρτήσεων () Εκτίµηση Πολυπλοκότητας Αλγορίθµων Ορέστης Τελέλης telelis@unipi.gr Ορισµός. Εστω συναρτήσεις: f : N R και g : N R η f(n) είναι Ω( g(n) ) αν υπάρχουν σταθερές C

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Δοµικά στοιχεία Πίνακες Το κόσκινο του Ερατοσθένη Αντιγραφή πινάκων

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 7ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος Δείκτες (Pointers) (1) 142 Κάθε μεταβλητή, εκτός από την τιμή της, έχει και μία συγκεκριμένη διεύθυνση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομές Δεδομένων Ενότητα 2 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 2: Θέματα Απόδοσης Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει. οµηµένες τεχνικές Ο στόχος των δοµηµένων τεχνικών είναι: Υψηλής ποιότητας προγράµµατα Εύκολη τροποποίηση προγραµµάτων Απλοποιηµένα προγράµµατα Μείωση κόστους και χρόνου ανάπτυξης. Οι βασικές αρχές τους

Διαβάστε περισσότερα

Αλγόριθμοι Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Αλγόριθμοι Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Αλγόριθμοι Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Εισαγωγή Τι είναι ένας αλγόριθμος Ευκλείδης πατέρας των ποιο γνωστών αλγορίθμων (πχ ΜΚΔ) Στην αρχή : μαθηματικό παιχνίδι (μεγάλος όγκος υπολογισμών

Διαβάστε περισσότερα

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i. Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 14: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης 3) Mergesort Ταξινόμηση με Συγχώνευση 4) BucketSort Ταξινόμηση με Κάδους Διδάσκων:

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 24: Μη Ντεντερμινιστικές Μηχανές Turing Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays) ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 7 Πίνακες (Arrays) 1-D 0 1 2 2-D 3-D 0 0 1 1 2 2 3 3 array[3][2]

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή

Διαβάστε περισσότερα

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

Διαβάστε περισσότερα