3.4 Στοίβα (stack) (μόνο θεωρία)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Παράδειγμα 1:Ταξινόμηση Φυσαλίδας
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Παράδειγμα 3: Δίνονται Ν αριθμοί Xj,j=1,2,…N.Να αναπτυχθεί αλγόριθμος που θα βρίσκει το μεγαλύτερο αριθμό και τις θέσεις στις οποίες εμφανίζεται αυτός.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
Παράδειγμα 1:Σειριακή αναζήτηση
Εισαγωγή στους Αλγόριθμους Ταξινόμησης
1. Να γραφτεί αλγόριθμος ο οποίος θα ορίζει ένα μονοδιάστατο πίνακα Α 10 θέσεων. Ακολούθως θα διαβάζει από το πληκτρολόγιο τιμές τις οποίες θα τοποθετεί.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
Αλεξιάδης Γεώργιος ΕΠΠΑΙΚ Σαπών
ΔΙΔΑΚΤΙΚΕΣ ΔΥΣΚΟΛΙΕΣ ΣΤΟΥΣ ΠΙΝΑΚΕΣ ΠΕΚ ΠΕΙΡΑΙΑ Α΄φάση Επιμόρφωσης Εκπ/κών κλάδου ΠΕ19 Διδακτική της Πληροφορικής Ρόδος, Νοέμβρης 2007.
Παράδειγμα 2: Κινηματογράφοι Να γραφεί πρόγραμμα το οποίο:
Εισαγωγή στην επιστήμη των υπολογιστών
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A εισαγωγή αναζήτησηεπιλογή διατεταγμένος πίνακας.
Αλγόριθμοι Ταξινόμησης
Στοίβα & Ουρά Πέμπτη 08/03/2007 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Τμήμα: Γ3τεχν. Καθηγητής :Ν. Γιαννακόπουλος ΠΕ19 Ερωτήσεις:
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Στοίβα, Ουρά.
Αλγόριθμοι συνέχεια 2.2.4, 2.2.5,
Ουρά Προτεραιότητας: Heap
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Ωμή Βία Είναι μία άμεση προσέγγιση που βασίζεται στην εκφώνηση του προβλήματος και τους ορισμούς.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Δομές Δεδομένων. Επιλογή δομής δεδομένων Κριτήρια: – Μέγεθος του προβλήματος – Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν το κόστος: – Lookup: αναζήτηση/έλεγχος.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Ταξινόμηση και Αναζήτηση
Αλγόριθμοι Ταξινόμησης
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
ΑΣΚΗΣΗ 11. ΑΣΚΗΣΗ 11 Ποιοι είναι οι άλλοι δύο πιθανοί συνδυασμοί ; ΑΣΚΗΣΗ 11 1ος 4ος Ποιοι είναι οι άλλοι δύο πιθανοί συνδυασμοί ;
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Κεφάλαιο 10 – Υποπρογράμματα
ΑΕΠΠ 3ο Κεφάλαιο Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής 1 Ο Λύκειο Ρόδου.
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ §3.7 ΤΑΞΙΝΟΜΗΣΗ
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Ταξινόμηση - Sorting.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
8-1 ΜΑΘΗΜΑ 8 ο Εισαγωγή στους Αλγόριθμους Ταξινόμησης.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Κεφάλαιο 3ο Δομές Δεδομένων.
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
ΤΕΙ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΕΡΡΕΣ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Πτυχιακή εργασία Μάρθα Τσολακίδου.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Οι Δομές Δεδομένων Ουρά και Στοίβα
Δυναμικός Κατακερματισμός
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανάπτυξη εφαρμογής με οπτικοποιημένο περιβάλλον για τους αλγόριθμους ταξινόμησης και αναζήτησης ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ Γεωργιαδης νικολαοσ.
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
ΣΤΟΙΒΑ.
Σειριακή ή Γραμμική Αναζήτηση 1.Μοναδικό Κλειδί (key)
Η τακτοποίηση των κόμβων μίας δομής με μία ιδιαίτερη σειρά είναι μία πολύ σημαντική λειτουργία που ονομάζεται ταξινόμηση (sorting) ή διάταξη (ordering).
ENOTHTA 2. ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΕΦΑΛΑΙΟ 2
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Οι Δομές Δεδομένων Ουρά και Στοίβα
Φοιτητής: Τσακίρης Αλέξανδρος Επιβλέπων: Ευάγγελος Ούτσιος
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Πολυπλοκότητα Αλγορίθμων
Δυναμικός Κατακερματισμός
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
ΠΙΝΑΚΕΣ Δομή ΟΥΡΑΣ (queue)
Μεταγράφημα παρουσίασης:

3.4 Στοίβα (stack) (μόνο θεωρία) Η στοίβα είναι μια δομή δεδομένων, στην οποία το στοιχείο που εισάγεται τελευταίο, εξάγεται πρώτο. (Last In First Out) Ώθηση Απώθηση Ώθηση – Υπερχείλιση (overflow) Απώθηση – Υποχείλιση Υλοποίηση της στοίβας με πίνακα Ώθηση top ← top + 1 Stack[top] ← νέοΣτοιχείο Απώθηση Εξαγωγή του Stack[top] top ← top - 1 Πού βρίσκουν εφαρμογή οι στοίβες; Στα υποπρογράμματα (10ο κεφ), στο back κουμπί των πλοηγητών, στο undo, …

3.5 Ουρά (queue) (μόνο θεωρία) Η ουρά είναι μια δομή δεδομένων, στην οποία το στοιχείο που εισάγεται πρώτο, εξάγεται πρώτο. (Fist In First Out) Εισαγωγή Εξαγωγή Εισαγωγή– Υπάρχει χώρος; Εξαγωγή– Υπάρχει στοιχείο; Υλοποίηση της ουράς με πίνακα Εισαγωγή rear ← rear + 1 Queue[rear] ← νέοΣτοιχείο Πού βρίσκουν εφαρμογή οι ουρές; Στους εκτυπωτές, στους webservers, στα multitasking λειτουργικά συστήματα Εξαγωγή Εξαγωγή του Queue[front] front ← front + 1

3.6 Αναζήτηση σε μονοδιάστατο πίνακα Σειριακή (sequential) ή γραμμική (linear)μέθοδος Ζητούμενο είναι να απαντήσω αν υπάρxει ή δεν υπάρχει το key μέσα σε έναν πίνακα 10 στοιχείων 1η εκδοχή 2η εκδοχή Απαράδεκτη μέθοδος διότι ακόμα και αν βρει το key στο 1ο κελί, συνεχίζει την αναζήτηση μέχρι το τελευταίο στοιχείο του πίνακα! Στον προγραμματισμό δεν μας ενδιαφέρει μόνο να δώσουμε αλγόριθμο που «δουλεύει», αλλά απαιτούμε να είναι και αποδοτικός (efficient)!

3.6 Αναζήτηση σε μονοδιάστατο πίνακα Σειριακή (sequential) ή γραμμική (linear)μέθοδος Ο αλγόριθμος δουλεύει για πίνακες ακεραίων, πραγματικών ή χαρακτήρων; Ζητούμενο είναι να απαντήσω σε ποια θέση του πίνακα βρίσκεται το key, εφόσον υπάρxει βέβαια. 4η εκδοχή 3η εκδοχή Μπορώ να αποφύγω τη χρήση της έξτρα μεταβλητής pos; Αν το key υπάρχει πολλές φορές μέσα στον πίνακα;

3.6 Αναζήτηση σε μονοδιάστατο πίνακα Σειριακή (sequential) ή γραμμική (linear)μέθοδος Γιατί ο αλγόριθμος της σειριακής αναζήτησης δεν δουλεύει αποδοτικά για ταξινομημένους πίνακες; Έστω ο παρακάτω ταξινομημένος πίνακας 10 12 16 20 28 29 38 40 51 100 Δεν δουλεύει αποδοτικά, διότι αν το key δεν υπάρχει μέσα στον πίνακα, ο αλγόριθμός μας θα ψάξει μέχρι και το τελευταίο κελί, μην αξιοποιώντας έτσι την ιδιότητα του ταξινομημένου πίνακα!!! Π.χ. αν ψάχνω τον 22, έχει νόημα να ψάχνω ακόμα όταν συναντήσω τον 28; Μπορώ να τροποποιήσω τον αλγόριθμό μου ώστε να δουλεύει αποδοτικά και στους ταξινομημένους; Π.χ. αν ψάχνει τον 22, να σταματά την αναζήτηση όταν βρει τον 28; Ο αλγόριθμος της σειριακής αναζήτησης είναι ο απλούστερος αλλά ο λιγότερο αποδοτικός αλγόριθμος. Οπότε, ενδείκνυται μόνο στις περιπτώσεις όπου Ο πίνακας είναι μη ταξινομημένος Ο πίνακας είναι μικρού μεγέθους Η αναζήτηση στον πίνακα γίνεται σπάνια Δυαδική αναζήτηση

3.7 Ταξινόμηση/διάταξη μονοδιάστατου πίνακα Γιατί να ταξινομήσω μια δομή δεδομένων; Για να επιταχύνω την εύρεση ενός στοιχείου Για να εντοπίσω τα x μικρότερα ή μεγαλύτερα στοιχεία του πίνακα Δοθέντων των στοιχείων α1, α2, α3, …, αν η ταξινόμηση των στοιχείων συνίσταται στη μετάθεση της θέσης των στοιχείων, ώστε να τοποθετηθούν σε μία σειρά ακ1, ακ2, ακ3,…,ακν έτσι ώστε, δοθείσης μίας συνάρτησης διάταξης, να ισχύει: f(ακ1) ≤ f(ακ2) ≤ … ≤ f(ακν) Θα μελετήσουμε τον αλγόριθμο της ευθείας ανταλλαγής ο οποίος είναι ο πιο απλός αλλά και ο πιο αργός αλγόριθμος ταξινόμησης! Ο πλέον γρήγορος αλγόριθμος ταξινόμησης είναι η γρήγορη ταξινόμηση (quick sort)!

3.7 Ταξινόμηση/διάταξη μονοδιάστατου πίνακα Ταξινόμηση ευθείας ανταλλαγής/φυσαλίδας Θέλουμε να ταξινομήσουμε κατά αύξουσα σειρά τον πίνακα table 1ο 2ο 3ο 4ο 5ο 6ο 7ο 8ο 6 5 3 1 8 7 2 4 Αν και επεξεργάζεται μονοδιάστατο πίνακα, χρειάζεται 2 Για!

3.7 Ταξινόμηση/διάταξη μονοδιάστατου πίνακα Ταξινόμηση ευθείας ανταλλαγής/φυσαλίδας Θέλουμε να ταξινομήσουμε κατά αύξουσα σειρά τον παρακάτω πίνακα Συγκρίνονται ζεύγη αριθμών και, αν χρειαστεί, αντιμετατίθενται ώστε ο μεγαλύτερος να βρεθεί στο 2ο κελί Όταν τελειώνει μια σάρωση του πίνακα, το μεγαλύτερο στοιχείο οδηγείται στο τέλος Όταν ένας αριθμός τοποθετηθεί στο τέλος, τα κελιά αυτά κλειδώνουν και δεν συμμετέχουν στις επόμενες συγκρίσεις ζευγαριών