Κεφάλαιο 3ο Δομές Δεδομένων.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
3.4 Στοίβα (stack) (μόνο θεωρία)
Advertisements

Κεφάλαιο Τμηματικός προγραμματισμός
Παράδειγμα 3: Δίνονται Ν αριθμοί Xj,j=1,2,…N.Να αναπτυχθεί αλγόριθμος που θα βρίσκει το μεγαλύτερο αριθμό και τις θέσεις στις οποίες εμφανίζεται αυτός.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Εισαγωγή στους Η/Υ Πίνακες.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΔΙΔΑΚΤΙΚΕΣ ΔΥΣΚΟΛΙΕΣ ΣΤΟΥΣ ΠΙΝΑΚΕΣ ΠΕΚ ΠΕΙΡΑΙΑ Α΄φάση Επιμόρφωσης Εκπ/κών κλάδου ΠΕ19 Διδακτική της Πληροφορικής Ρόδος, Νοέμβρης 2007.
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Παράδειγμα 2: Κινηματογράφοι Να γραφεί πρόγραμμα το οποίο:
Εισαγωγή στην επιστήμη των υπολογιστών
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
Αλγόριθμοι Ταξινόμησης
Στοίβα & Ουρά Πέμπτη 08/03/2007 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Τμήμα: Γ3τεχν. Καθηγητής :Ν. Γιαννακόπουλος ΠΕ19 Ερωτήσεις:
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Στοίβα, Ουρά.
Αλγόριθμοι συνέχεια 2.2.4, 2.2.5,
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Δομές Δεδομένων.
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Κεφάλαιο 10 – Υποπρογράμματα
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ §3.7 ΤΑΞΙΝΟΜΗΣΗ
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Ροές Δεδομένων (3 ο Μέρος)
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 3. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Δεδομένα Δεδομένα (data) Δεδομένα (data) –αφαιρετική αναπαράσταση.
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ ΟΣΟ ΣΥΝΘΗΚΗ ΕΠΑΝΑΛΑΒΕ ΕΝΤΟΛΕΣ ΕΝΤΟΛΕΣΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΚΕΦΑΛΑΙΟ ΑΛΓΟΡΙΘΜΟΙ Αλγόριθμος Η έννοια του αλγορίθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής. Πχ συνταγή.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Οι Δομές Δεδομένων Ουρά και Στοίβα
Δυναμικός Κατακερματισμός
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΔΟΜΗ ΓΙΑ (1) Για i από .... μέχρι .... Αν ………….… τότε
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΓΕΜΙΣΜΑ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ (Άσκηση 1)
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Κάθε ένα από τα αντικείμενα λέγεται στοιχείο του πίνακα.
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
Μονοδιάστατοι πίνακες
ΣΤΟΙΒΑ.
Σειριακή ή Γραμμική Αναζήτηση 1.Μοναδικό Κλειδί (key)
Δισδιάστατοι Πίνακες 3 7 … i γ ρ α μ ή j - στήλη 1 2 M N
Η τακτοποίηση των κόμβων μίας δομής με μία ιδιαίτερη σειρά είναι μία πολύ σημαντική λειτουργία που ονομάζεται ταξινόμηση (sorting) ή διάταξη (ordering).
Δομή Επιλογής , 8.1.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Οι Δομές Δεδομένων Ουρά και Στοίβα
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Λυμένα θέματα πανελλαδικών εξετάσεων με υποπρογράμματα
Από τη Δομή Ακολουθίας στις Δομές Επανάληψης
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Δυναμικός Κατακερματισμός
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
ΠΙΝΑΚΕΣ Δομή ΟΥΡΑΣ (queue)
Μεταγράφημα παρουσίασης:

Κεφάλαιο 3ο Δομές Δεδομένων

Δομές Δεδομένων Είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Βασικές λειτουργίες επί των δομών δεδομένων: Προσπέλαση (πρόσβαση σε ένα στοιχείο της δομής με σκοπό την ανάγνωσή του ή την τροποποίησή του) Εισαγωγή (προσθήκη νέων στοιχείων στην δομή) Διαγραφή (αφαίρεση στοιχείων από την δομή) Αναζήτηση (προσπέλαση των στοιχείων της δομής με σκοπό την εύρεση αυτών που ικανοποιούν κάποια ιδιότητα) Ταξινόμηση (διάταξη των στοιχείων της δομής σε αύξουσα ή φθίνουσα σειρά) Αντιγραφή (τα στοιχεία της δομής αντιγράφονται σε μια άλλη δομή) Συγχώνευση (δύο ή περισσότερες δομές συνενώνονται σε μια) Διαχωρισμός (μια δομή διασπάται σε περισσότερες)

Βασικές κατηγορίες δομών δεδομένων Στατικές δομές: Τα στοιχεία του αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Έχουν σταθερό μέγεθος στην διάρκεια εκτέλεσης του προγράμματος. Π.χ. πίνακες Δυναμικές δομές: Τα στοιχεία τους δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Δεν έχουν σταθερό μέγεθος στην διάρκεια εκτέλεσης του προγράμματος. Η τεχνική με την οποία γίνεται η τοποθέτηση των στοιχείων μιας δυναμικής δομής στην μνήμη ονομάζεται «δυναμική παραχώρηση μνήμης» Π.χ. δένδρα, λίστες

Υπάρχει μεγάλη εξάρτηση μεταξύ δομής δεδομένων και του αλγορίθμου που την επεξεργάζεται και μάλιστα το πρόγραμμα πρέπει να τα θεωρεί ως αδιάσπαστη ενότητα: Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα

Πίνακες Πίνακας είναι μια στατική δομή δεδομένων που αποτελείται αποκλειστικά από αντικείμενα του ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε αντικείμενο του πίνακα ονομάζεται στοιχέιο. Πότε χρειάζονται; Όταν πρέπει να γίνει πολλαπλή επεξεργασία των ίδιων δεδομένων Π.χ. αν πρέπει να βρώ τον μέσο όρο 100 αριθμών και μετά να υπολογίσω πόσοι από αυτούς ξεπερνούν τον μέσο όρο δεν θα ζητήσω από τον χρήστη να πληκτρολογήσει δυο φορές του 100 αριθμούς, αλλά θα τους αποθηκεύσω σε έναν πίνακα Α[100] προκειμένου να τους χειριστώ δυο φορές, μια για να υπολογίσω το μέσο όρο και μια για να τους συγκρίνω με τον μέσο όρο που υπολόγισα.

Επιπλέον στοιχεία για τους πινακες Μειονεκτήματα: απαιτούν μνήμη, καθώς δεσμεύουν πολλές θέσεις ανάλογα με το μέγεθός τους και περιορίζουν τις δυνατότητες του προγράμματος καθώς το μέγεθος δεν μεταβάλλεται. Διαστάσεις: Ένας πίνακας μπορεί να είναι μονοδιάστατος, π.χ. Α[10], δισδιάστατος, π.χ. Β[5,6], και γενικά ν-διάστατος, π.χ. Π[α1,α2,…,αν] Πλήθος στοιχείων: Όσο και το γινόμενο των διαστάσεών του. Π.χ. ο Β[5,6] αποτελείται από 5*6=30 στοιχεία. Ονοματολογία: ακολουθεί τους κανόνες που ισχύουν για τις μεταβλητές και ακολουθούν οι αγκύλες που περιέχουν είτε ακέραιους αριθμούς είτε ακέραιες εκφράσεις. Προσοχή!!! Στην ψευδογλώσσα, το μέγεθος του πίνακα δεν δηλώνεται, ενώ στην ΓΛΩΣΣΑ δηλώνεται στο τμήμα των μεταβλητών. Οπουδήποτε αλλού εμφανίζεται ο πίνακας, δηλώνει στοιχείο του και όχι το μέγεθός του.

Προσπέλαση σε πίνακα Μπορεί να γίνει σε μεμονωμένα στοιχεία του πίνακα ή μαζικά μέσω μιας δομής επανάληψης. Π.χ. Αλγόριθμος π_χ Δεδομένα // Α // Εκτύπωσε Α[3] …… Αλγόριθμος π_χ Δεδομένα // Α // Για i από 1 μέχρι 30 Εκτύπωσε Α[i] Τέλος_επανάληψης ……. Προσοχή!!! Θα πρέπει σε κάθε περίπτωση να φροντίζουμε ώστε να μην ξεπερνάμε τα όρια των δεικτών.

Μονοδιάστατοι πίνακες Άθροισμα στοιχείων του πίνακα: Έστω Α[Ν] ένας πίνακας αριθμών. Το διπλανό απόσπασμα υπολογίζει το άθροισμα των στοιχείων του. Διαιρώντας με το μέγεθος Ν του πίνακα έχουμε τον μέσο όρο των στοιχείων του. Υπολογισμός μέγιστου: Έστω Α[Ν] ένας πίνακας αριθμός. Το διπλανό απόσπασμα υπολογίζει την μέγιστη τιμή των στοιχείων του. Εάν οι τιμές του πίνακα έχουν μια ελάχιστη τιμή π.χ. είναι βαθμοί μεγαλύτεροι ή ίσοι του μηδενός, τότε το max μπορεί να αρχικοποιηθεί με μια τιμή μικρότερη από την ελάχιστη δυνατή, π.χ. με το -1. Σ<-0 Για κ από 1 μέχρι Ν Σ<-Σ+Α[κ] Τέλος_επανάληψης max <- A[1] Για κ από 1 μέχρι Ν Αν Α[κ]>max τότε max<-Α]κ] Τέλο_αν Τέλος_επανάληψης max <- -1 Για κ από 1 μέχρι Ν Αν Α[κ]>max τότε max<-Α]κ] Τέλο_αν Τέλος_επανάληψης

Μονοδιάστατοι πίνακες Εύρεση θέσης ΜΟΝΑΔΙΚΟΥ μέγιστου: Έστω πίνακας Α[Ν]. Το παρακάτω απόσπασμα υπολογίζει την θέση του στοιχείου του πίνακα με την μέγιστη τιμή, όταν αυτό είναι μοναδικό, αποθηκεύοντάς την στην μεταβλητή θέση. μεγ<-Α[1] θέση<-1 Για κ από 1 μέχρι Ν Αν Α[κ]>μεγ τότε μεγ<-Α[κ] θέση<-κ Τέλος_αν Τέλος_επανάληψης

Μονοδιάστατοι πίνακες max<- Β[1] θέση<-1 Για κ από 1 μέχρι Ν Αν Β[κ]> max τότε max<-Β[κ] θέση<-κ Τέλος_αν Τέλος_επανάληψης Εμφάνισε Ο[θέση] max<-Α[1] Για κ από 1 μέχρι Ν Αν Α[κ]> max τότε max<-Α[κ] Τέλος_αν Τέλος_επανάληψης Για κ από 1 μέχρι Ν Αν Α[κ]= max τότε Εμφάνισε κ Τέλος_αν Τέλος_επανάληψης Παράλληλοι πίνακες: Έστω Ο[Ν] πίνακας με ονόματα μαθητών και Β[Ν] πίνακας με τους βαθμούς τους. Το διπλανό απόσπασμα δίνει το όνομα του μαθητή με τον καλύτερο βαθμό. Εμφάνιση όλων των θέσεων μεγίστου: Έστω Α[Ν] ένας πίνακας αριθμών. Στο διπλανό απόσπασμα υπολογίζεται αρχικά η μέγιστη τιμή των στοιχείων του. Στην συνέχει εντοπίζονται οι θέσεις των στοιχείων που είναι ίσα με την μέγιστη τιμή.

Δισδιάστατοι πίνακες 15 18 13 14 12 20 19 Χρησιμοποιούνται όταν τα δεδομένα πρέπει να ομαδοποιούνται σε γραμμές και στήλες. Πχ. Για κάθε ένα από τα 4 μαθήματα να αποθηκεύω 3 βαθμολογίες, θα χρειαστώ πίνακα Β[4,3] Για την προσπέλαση δισδιάστατου πίνακα χρειάζονται δυο εμφωλευμένες δομές επανάληψης. Αν η μεταβλητή του εξωτερικού βρόχου αφορά τον 1ο δείκτη του πίνακα τότε έχουμε προσπέλαση κατά γραμμές, διαφορετικά κατά στήλες. Για κ από 1 μέχρι Ν Για λ από 1 μέχρι Μ Διάβασε Α[κ,λ] Τέλος_επανάληψης Τέλος_επανάληψης

Δισδιάστατοι Τετραγωνικοί Πίνακες Τετραγωνικός είναι ο πίνακας που έχει ίδια διάσταση γραμμών και στηλών. Κύρια διαγώνιος τετραγωνικού πίνακα: Έστω πίνακας Α[Ν,Ν]. Το διπλανό απόσπασμα εμφανίζει τα στοιχεία της κύριας διαγωνίου του. Δευτερεύουσα διαγώνιος τετραγωνικού πίνακα: Έστω πίνακας Α[Ν,Ν]. Το διπλανό απόσπασμα εμφανίζει τα στοιχεία της δευτερεύουσας διαγωνίου. Για κ από 1 μέχρι Ν Για λ από 1 μέχρι Ν Αν κ=λ τότε Εμφάνισε Α[κ,λ] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για κ από 1 μέχρι Ν Για λ από 1 μέχρι Ν Αν (κ+λ=Ν+1) τότε Εμφάνισε Α[κ,λ] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

Δισδιάστατοι Τετραγωνικοί Πίνακες Εκατέρωθεν της κύριας διαγωνίου τετραγωνικού πίνακα: Έστω πίνακας Α[Ν,Ν]. Το διπλανό απόσπασμα εμφανίζει τα στοιχεία που βρίσκονται κάτω από την κύρια διαγώνιό του. Εκατέρωθεν της κύριας διαγωνίου τετραγωνικού πίνακα: Έστω πίνακας Α[Ν,Ν]. Το διπλανό απόσπασμα εμφανίζει τα στοιχεία που βρίσκονται πάνω από την κύρια διαγώνιό του. Για κ από 1 μέχρι Ν Για λ από 1 μέχρι Ν Αν κ>λ τότε Εμφάνισε Α[κ,λ] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για κ από 1 μέχρι Ν Για λ από 1 μέχρι Ν Αν (κ<λ) τότε Εμφάνισε Α[κ,λ] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

Άθροισμα στοιχείων δισδιάστατου πίνακα: Έστω Α[Ν,Μ] ένας πίνακας αριθμών. Το διπλανό απόσπασμα υπολογίζει και εμφανίζει το άθροισμα των στοιχείων του. Διαιρώντας με το μέγεθος ΝxΜ του πίνακα έχουμε τον μέσο όρο των στοιχείων του. Παρατηρείστε ότι η αρχικοποίηση έγινε πριν τις Για, ενώ η εμφάνιση μετά τις Για. Εύρεση θέσης ΜΟΝΑΔΙΚΟΥ μεγίστου: Έστω Α[Ν,Μ] ένας πίνακας αριθμών. Το διπλανό απόσπασμα υπολογίζει και εμφανίζει την θέση του στοιχείου του πίνακα με την μέγιστη τιμή, όταν αυτό είναι μοναδικό αποθηκεύοντας τις «συντεταγμένες» του στις μεταβλητές γρ και στ. Σ<-0 Για κ από 1 μέχρι Ν Για λ από 1 μέχρι Μ Σ<-Σ+Α[κ,λ] Τέλος_επανάληψης Τέλος_επανάληψης Εμφάνισε Σ Εμφάνισε Σ/(Ν*Μ) μεγ<-Α[1,1] γρ<-1 στ<-1 Για κ από 1 μέχρι Ν Για λ από 1 μέχρι Μ Αν Α[κ,λ]>μεγ τότε μεγ<-Α[κ,λ] γρ<-κ στ<-λ Τέλος_επανάληψης Τέλος_επανάληψης Εμφάνισε μεγ,γρ,στ

Άθροισμα γραμμών – στηλών σε δισδιάστατο πίνακα Άθροισμα γραμμών: Το διπλανό απόσπασμα υπολογίζει το άθροισμα των στοιχείων κάθε γραμμής του και το τοποθετεί στον πίνακα Β[Ν]. Δηλαδή το άθροισμα των στοιχείων της κ γραμμής του πίνακα Α θα είναι το στοιχείο Β[κ] του πίνακα Β. Άθροισμα στηλών πίνακα: Αλλάζουμε μόνο την θέση των βρόγχων. Για κ από 1 μέχρι Ν Σ<-0 Για λ από 1 μέχρι Μ Σ<-Σ+Α[κ,λ] Τέλος_επανάληψης Β[κ]<-Σ Τέλος_επανάληψης Για λ από 1 μέχρι Ν Σ<-0 Για κ από 1 μέχρι Μ Σ<-Σ+Α[κ,λ] Τέλος_επανάληψης Β[λ]<-Σ Τέλος_επανάληψης

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

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

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

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

Ταξινόμηση/διάταξη μονοδιάστατου πίνακα Ταξινόμηση ευθείας ανταλλαγής/φυσαλίδας 1ο 2ο 3ο 4ο 5ο 6ο 7ο 8ο 6 5 3 1 8 7 2 4

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

Στοίβα Ώθηση (Push) στοιχείου στην κορυφή της στοίβας Δομή δεδομένων με ένα άκρο, που υλοποιείται με την βοήθεια πινάκων. LIFO (Last-In-First-Out) Δύο είναι οι βασικές λειτουργείες που γίνονται σε μια στοίβα Ώθηση (Push) στοιχείου στην κορυφή της στοίβας Απώθηση (Pop) στοιχείου από την κορυφή της στοίβας Δείκτης top !! Ιδιαίτερη προσοχή δίνεται σε περίπτωση υπερχείλισης (overflow) και στην περίπτωση υποχείλισης (underflow).

Έστω μια στοίβα στην ακόλουθη κατάσταση Έστω μια στοίβα στην ακόλουθη κατάσταση. Δώστε την κατάσταση της στοίβας και του δείκτη top για καθεμιά από τις παρακάτω πράξεις: α) Ώθηση της τιμής 15 β) Απώθηση γ) Απώθηση δ) Ώθηση της τιμής 18 Α ? 9 17 12 top=3 Α ? 15 9 17 12 Α ? 15 9 17 12 Α ? 15 9 17 12 Α ? 15 18 17 12 top=4 top=3 top=3 top=2

Τμήμα αλγορίθμου ώθησης Διάβασε x αν top<N τότε top top + 1 A[top] x αλλιώς εμφάνισε “Υπερχείλιση” τέλος_αν

Τμήμα αλγορίθμου απώθησης αν top > 0 τότε εμφάνισε Α[top] top top – 1 αλλιώς εμφάνισε “Υποχείλιση” τέλος_αν

Ουρά Εισαγωγή (enqueue))στοιχείου στο πίσω άκρο της ουράς Δομή δεδομένων με δύο άκρα, που υλοποιείται με την βοήθεια πινάκων. FIFO (First-In-First-Out) Δύο είναι οι βασικές λειτουργίες που γίνονται σε μια ουρά Εισαγωγή (enqueue))στοιχείου στο πίσω άκρο της ουράς Εξαγωγή (dequeue) στοιχείου από το εμπρός άκρο της ουράς Δείκτες front και rear !! Ιδιαίτερη προσοχή δίνουμε στην περίπτωση που η ουρά είναι άδεια ή γεμάτη αντίστοιχα.

Έστω μια ουρά 8 θέσεων. Να δώσετε την κατάσταση της ουράς και των δεικτών για καθεμία από τις παρακάτω πράξεις: α) εισαγωγή της τιμής 18 β) εξαγωγή γ) εξαγωγή δ) εισαγωγή της τιμής 35 Α ? 32 67 45 front rear Α ? 32 67 45 18 front rear Α ? 32 67 45 18 front rear Α ? 32 67 45 18 front rear Α ? 32 67 45 18 35 front rear

Τμήμα αλγορίθμου εισαγωγής διάβασε x αν rear < Ν τότε rear rear + 1 A[rear] x αλλιώς εμφάνισε “Η ουρά είναι γεμάτη” τέλος_αν

Τμήμα αλγορίθμου εξαγωγής αν front <= rear τότε εμφάνισε A[front] front front +1 αλλιώς εμφάνισε “Η ουρά είναι άδεια” τέλος_αν