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

Σχετικά έγγραφα
Διάλεξη 1: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 01: Δομές Δεδομένων και Αλγόριθμοι Εισαγωγή

Διάλεξη 01 Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή

Διάλεξη 01: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

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

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

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

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

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

Φροντιστήριο 4 Σκελετοί Λύσεων

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

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

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

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

Προγραμματισμός Δομές Δεδομένων

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

Φροντιστήριο 4 Σκελετοί Λύσεων

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

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

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

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

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

Στοίβες με Δυναμική Δέσμευση Μνήμης

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ

HY-486 Αρχές Κατανεμημένου Υπολογισμού

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

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

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

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

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

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

Εργαστήριο 5. Εαρινό Εξάμηνο

Διάλεξθ 01: Δομζσ Δεδομζνων και Αλγόρικμοι - Ειςαγωγι

Βασικές Δομές Δεδομένων

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

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

Προγραμματισμός ΙI (Θ)

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

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

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

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

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

ΑΝΑΚΟΙΝΩΣΗ ΚΑΤΑΤΑΚΤΗΡΙΩΝ ΕΞΕΤΑΣΕΩΝ ΑΚ. ΈΤΟΥΣ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

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

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

7η Σειρά Ασκήσεων. Μπορείτε, αν θέλετε, να χρησιμοποιήσετε τον τύπο string της ΗΡ Pascal και τις αντίστοιχες συναρτήσεις (κεφ 10.1 των σημειώσεων).

υναµικές οµές εδοµένων

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

HMY 220: Σήματα και Συστήματα Ι

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

3. Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

Διδάσκοντες: Δ. Φωτάκης, Δ. Σούλιου Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

Transcript:

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

Συμβόλαιο Μαθήματος Επίπεδο: Προπτυχιακό Πίστωση: 7.0 μονάδες ECTS Προαπαιτούμενα: ΕΠΛ034: Εισαγωγή στον Προγραμματισμό για ΗΜΜΥ Μέθοδοι Διδασκαλίας Διαλέξεις (3 ώρες εβδομαδιαίως): Παράδοση Διδασ. Ύλης Φροντιστήριο (1 ώρα εβδομαδιαίως): Ύλη / Θεωρητική Εξάσκηση Εργαστήριο (2 ώρες εβδομαδιαίως): Πρακτική Εξάσκηση ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 2

Συμβόλαιο Μαθήματος Αξιολόγηση 55% Τελική Εξέταση(1) 20% Ενδιάμεση Εξέταση(1) Ημερ.: Δευτέρα, 15 Οκτωβρίου 2012 (7 η Εβδ.) 25% Ασκήσεις(5 συνολικά) Προγραμματιστικές, Θεωρητικές ή συνδυασμός ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3

Βιβλιογραφία Βασική Βιβλιογραφία Data Structures A PseudocodeApproach with C, Richard F. Gilberg& Behrouz A. Fourouzan, 2nd Edition, Thomson, ISBN: 0-534-39080-3, ISBN-13: 9780534390808, 2005. Βοηθητική Βιβλιογραφία Σημειώσεις Μαθήματος και Συνοδευτικό Υλικό Algorithm Design: Foundations, Analysis, and Internet Examples, Michael T. Goodrich and Roberto Tamassia, ISBN-10: 0471383651, ISBN-13: 978-0471383659, 2001. K.N. King,C Programming: A Modern Approach, Second Edition, ISBN-10: 0393979504, ISBN-13: 978-0393979503, 832 pages, W. W. Norton & Company, 2008. Νικόλαος Μισυρλής, Δομές Δεδομένων με C, ISBN 960-92031-1-6, 2002. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 4

Ιστοσελίδα Μαθήματος http://www.cs.ucy.ac.cy/courses/epl035/ ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 5

Δεδομένα - Τα δεδομένα βρίσκονται στο χαμηλότερο επίπεδο αφαιρετικότητας - Από τα δεδομένα προκύπτει η πληροφορίακαι η γνώση. Τα δεδομένα που χρησιμοποιούμε δεν έχουν πάντοτε τον ίδιο βαθμό πολυπλοκότητας, π.χ., Στοιχεία Φοιτητή vs. Ηλικία Ατόμου Μερικά μπορούν να αναλυθούν σε απλούστερα συστατικά, ενώ άλλα δεν μπορούν. Δεδομένα που δεν μπορούν να αναλυθούν λέγονται πρωτογενή δεδομένα primitive data types (π.χ. int, char) Τα δεδομένα ενός προβλήματος συνήθως δεν είναι μια άμορφη συλλογή στοιχείων. Τις περισσότερες φορές μπορούν να εκφραστούν με γνωστές μαθηματικές δομές, π.χ. σαν ένα απλό σύνολο (διακριτών στοιχείων): {2, 3, 5, 7, 11, 13} σαν ένα διάνυσμα (διατεταγμένων στοιχείων): (2, 3, 5, 7, 11, 13) σαν ένας πίνακας : 7 2 3 11 5 13 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 6

Δομές Δεδομένων - Οι δομές δεδομένων είναι συλλογές πρωτόγονων δεδομένων, που συνδυάζονται για να σχηματίσουν πολυπλοκότερα δεδομένα. Χρησιμοποιώντας τους αρχέγονους τύπους δεδομένων, μπορούμε να συνθέσουμε πιο πολύπλοκες δομές Θα χρησιμοποιήσουμε τον όρο πίνακαςγια να περιγράψουμε μια συλλογή στοιχείων τα οποία θα ονομάσουμε κόμβουςή καταχωρήματα. Ένας κόμβος μπορείνα είναι απλός, δηλαδή να αποτελείται από ένα μόνο πρωτόγονο δεδομένο, ή να είναι σύνθετος, οπότε αποτελείται από δύο ή περισσότερα πεδία. Τα πεδία ενός κόμβουμπορεί να αντιπροσωπεύουν πρωτόγονα δεδομένα διαφόρων τύπων. Στοιχεία Φοιτητή Όνομα (char[]) Ταυτότητα (int) Διεύθυνση Οδός (char[]) Αριθμός (int) Επαρχία (char[]) Παράδειγμα Δομής Φοιτητή στην C struct address{ char street[50]; int number; }; struct student{ char name[30]; int id; struct address saddress; }; ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 7

Δεδομένα (διεύθυνση και μήκος) Ένα πεδίο ή ένα καταχώρημα χαρακτηρίζεται από τη διεύθυνσητου και το μήκος του. Η διεύθυνση ενός πεδίου ή ενός καταχωρήματος είναι η διεύθυνση της πρώτης του κυψελίδας μνήμης και το μήκος του είναι ο αριθμός κυψελίδων από τις οποίες αποτελείται. Address 4bytes * Value 3669504 1 3669508 2 3669512 3 3669524 Α 3669536 5 int a[] µήκος=3 Παραδείγματα στην C int x = 5; printf("x=%d\taddress of x=%d\n", x, &x); int c = 'A'; printf("c=%c\taddress of c=%d\n", c, &c); int a[]={1,2,3}; for(int i=0; i<3; i++){ printf("a[%d]=%d\taddress of a[%d]=%d\n", i,a[i],i,&a[i]); } Η διεύθυνση του πρώτου πεδίου και ολόκληρου του πίνακα είναι 3669504. Η διεύθυνση του δεύτερου καταχωρήματος 3669508 κ.ο.κ. *Ισχύει για x86αρχιτεκτονικέςμε σύνολο διευθύνσεων 2 32 4x10 9. Για x64αρχιτεκτονικές είναι 8 bytes με σύνολο διευθύνσεων 2 64 = 18x10 18!!! ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8

Ενδόμνημη Παράσταση Δομών Δεδομένων Για να αναφερθούμε σε ένα καταχώρημα ή σε ένα πεδίο, χρησιμοποιούμε συνήθως συμβολικά ονόματα (όπως σε γλώσσες προγραμματισμού η ονομασία μεταβλητών αντιστοιχεί σε μία λέξη της μνήμης, π.χ., array). Για να πραγματοποιηθεί μια δομή δεδομένων, απαιτείται η συσχέτισητων συμβολικών ονομάτων με αντίστοιχα τμήματα της μνήμης του υπολογιστή. Αυτό μπορεί να γίνει με δύο τρόπους: 1. Διαδοχική (Στατική) Χορήγηση Μνήμης Παράδειγμα: Αποθήκευση πίνακα κατά γραμμές ή/και στήλες Address Value 3143928 1 3143932 2 3143936 3 3143940 4 3143944 5 3143948 6 Παράδειγμα στην C int b[][3]={{1,2,3}, {4,5,6}}; for(int i=0; i<2; i++){ for(int j=0; j<3; j++){ printf("address of b[%d][%d]=%d\n", i,j,&b[i][j]); } } Τυπώνει Address of b[0][0]= 3143928 Address of b[0][1]= 3143932 Address of b[0][2]= 3143936 Address of b[1][0]= 3143940 Address of b[1][1]= 3143944 Address of b[1][2]= 3143944 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 9

Ενδόμνημη Παράσταση Δομών Δεδομένων 2. Συνδετική Χορήγηση Μνήμης Ένα πεδίο μπορεί να παριστά τη διεύθυνση ενός άλλου πεδίου. Έτσι κατά τη συνδετική χορήγηση μνήμης κάθε κόμβος περιέχει πληροφορία σχετικά με το που βρίσκεται κάποιος άλλος κόμβος της δομής (π.χ., ο επόμενος, ο προηγούμενος). Για την αποθήκευση αυτής της πληροφορίας κάθε κόμβος χρειάζεται ένα ειδικό πεδίο(pointer). Το πεδίο αυτό είναι χαρακτηριστικό της συνδετικής χορήγησης μνήμης. Παράδειγμα: Απλά Συνδεδεμένη λίστα (linked-list) data next data next data next head A B C NULL ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 10

Παράδειγμα: Απλά Συνδεδεμένη λίστα head data next data next data next A B C NULL Παράδειγμα στην C struct node{ char data; struct node * next; }; struct node n1, n2, n3; n1.data='a'; n2.data='b'; n3.data='c'; n1.next=&n2; n2.next=&n3; n3.next=null; printf("n1 address=%d \tdata=%c \tnext=%d\n",&n1,n1.data, n1.next); printf("n2 address=%d \tdata=%c \tnext=%d\n",&n2,n2.data, n2.next); printf("n3 address=%d \tdata=%c \tnext=%d\n",&n3,n3.data, n3.next); Node Address data next n2 3143928 B 3143948 3143932 n1 3143936 A 3143928 3143940 3143944 n3 3143948 C 0 Οι κόμβοι βρίσκονται σε τυχαίες θέσεις μνήμης Εκτυπώνει n1 address=2751252 data=a next=2751236 n2 address=2751236 data=b next=2751220 n2 address=2751220 data=c next=0 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 11

Αλγόριθμοι Τι είναι ένας αλγόριθμος; Abu Jafar Mohammed ibn Musa Αl-Khowarizmi(790-840) Αλγόριθμοςείναι μιαπεπερασμένηακολουθία εντολών,αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο (μετρήσιμο) χρόνο, οι οποίες αν ακολουθηθούν επιτυγχάνεται κάποιο επιθυμητό αποτέλεσμα. Απαραίτητα κριτήρια: Υπάρχει είσοδος και έξοδος Καθορισμός εντολών (όχι ασάφειες). Περατότητα(να διεκπεραιώνει τον στόχο). Επίδοση δεν είναι απαραίτητη αλλά άκρως επιθυµητή Εξίσωση Wirth: Αλγόριθμοι + Δεδομένα = Προγράμματα Δηλαδή, δοθέντος ενός προβλήματος, ένας αλγόριθμος παρέχει τις οδηγίεςσύμφωνα με τις οποίες τα δεδομένατου προβλήματος μετασχηματίζονταικαι συνδυάζονταιγια να προκύψει η λύση του προβλήματος. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 12

Παράδειγμα Αλγοριθμικού Προβλήματος Το πρόβλημα επιλογής(selection problem) Πρόβλημα: Έστω ότι έχουμε n αριθμούς και θέλουμε να προσδιορίσουμε τον k-οστό πιο μεγάλο. π.χ. Έστω οι αριθμοί {5, 72, 3, 4, 1, 9, 65} (72,65,9,5,4,3,1) Ο 2 os πιο μεγάλος είναι ο 65,ο 6 os πιο μεγάλος είναι ο 3, κοκ. Αυτό το πρόβλημα είναι γνωστό ως το πρόβλημα επιλογής (the selection problem). Υπάρχουν διάφοροι εύκολοι τρόποι λύσης: 1. Sort-Based: Διαβάζουμε τους n αριθμούς σε μια λίστα, a. Ταξινομούμε τη λίστα από το μεγαλύτερο στο μικρότερο με βάση κάποιο αλγόριθμο ταξινόμησης. Επιστρέφουμε το (k-1)οστό στοιχείο της λίστας, δηλαδή το a[k- 1]. 2. Buffer-based: Διαβάζουμε τους k πρώτους αριθμούς σε μια λίστα a. Ταξινομούμε τη λίστα από το μεγαλύτερο στο μικρότερο δηλγια k=3έχουμε a={72,5,3}. Μετά, επεξεργαζόμαστε τους υπόλοιπους n-k αριθμούς ως εξής: αν ένα στοιχείο είναι πιο μικρό από το a[k-1] το αγνοούμε, διαφορετικά το τοποθετούμε στη σωστή θέση της λίστας. Όταν η διαδικασία αυτή τελειώσει, επιστρέφουμε το k-οστό στοιχείο της λίστας, δηλαδή το a[k-1]. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 13

Στόχος Μαθήματος Κατά την εκτέλεση ενός αλγόριθμου η δομή που έχουν τα δεδομένα παίζει πολύ μεγάλο ρόλο. Επίσης το να γράφουμε ένασωστό πρόγραμμα δεν είναι αρκετό. Ιδιαίτερα, όταν το σύνολο αρχικών δεδομένων είναι μεγάλου μεγέθους, ο χρόνος εκτέλεσηςενός προγράμματος είναι κύριας σημασίας. Στο μάθημα αυτό θα μάθουμε να i) υπολογίζουμε το χρόνο εκτέλεσης αλγόριθμωνκαι να ii) συγκρίνουμε την αποδοτικότητα διαφορετικών αλγόριθμων, προτού τους υλοποιήσουμε.θα μελετήσουμε επίσης μεθόδους βελτίωσης της ταχύτητας προγραμμάτων. Κεντρικός στόχοςτου μαθήματος είναι η μελέτη δομών δεδομένων, αναπαράστασής τους στη μνήμη ενός υπολογιστή, και αλγόριθμων που τις δημιουργούν και τις επεξεργάζονται. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 14

Επίδοση Αλγορίθμων Για την αξιολόγηση των διαφόρων αλγορίθμων χρησιμοποιούνται διάφορα μεγέθη. n: μέγεθος του προβλήματος T(n): Ο χρόνος εκτέλεσης T(n) Σύγκριση Πολυπλοκοτήτων O(lg 2 n) O(n) O(n 2 ) O(n 3 ) O(2 n ) n ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 15