Μονοδιάστατοι πίνακες

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Βασικές Έννοιες Προγραμματισμού
3.4 Στοίβα (stack) (μόνο θεωρία)
Κεφάλαιο Τμηματικός προγραμματισμός
Παράδειγμα 3: Δίνονται Ν αριθμοί Xj,j=1,2,…N.Να αναπτυχθεί αλγόριθμος που θα βρίσκει το μεγαλύτερο αριθμό και τις θέσεις στις οποίες εμφανίζεται αυτός.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
Να καταργήσουμε τη ΓΛΩΣΣΑ και να κρατήσουμε μόνο την ψευδογλώσσα
Παράδειγμα 1:Σειριακή αναζήτηση
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
ΔΙΔΑΚΤΙΚΕΣ ΔΥΣΚΟΛΙΕΣ ΣΤΟΥΣ ΠΙΝΑΚΕΣ ΠΕΚ ΠΕΙΡΑΙΑ Α΄φάση Επιμόρφωσης Εκπ/κών κλάδου ΠΕ19 Διδακτική της Πληροφορικής Ρόδος, Νοέμβρης 2007.
Παράδειγμα 2: Κινηματογράφοι Να γραφεί πρόγραμμα το οποίο:
Εισαγωγή στην επιστήμη των υπολογιστών
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Ενότητα Η Δομή Επανάληψης
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Δομές Δεδομένων.
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΑΕΠΠ 3ο Κεφάλαιο Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής 1 Ο Λύκειο Ρόδου.
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ §3.7 ΤΑΞΙΝΟΜΗΣΗ
Ερωτήσεις & Φύλλο εργασίας
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Κεφάλαιο 3ο Δομές Δεδομένων.
Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 3. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Δεδομένα Δεδομένα (data) Δεδομένα (data) –αφαιρετική αναπαράσταση.
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ ΟΣΟ ΣΥΝΘΗΚΗ ΕΠΑΝΑΛΑΒΕ ΕΝΤΟΛΕΣ ΕΝΤΟΛΕΣΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
Ένας εκδοτικός οίκος χρησιμοποιεί 35 διανομείς για τη διακίνηση των βιβλίων του. Στο τέλος κάθε μήνα καταγράφονται οι πωλήσεις που πραγματοποιήθηκαν από.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Δομή επιλογής Πολλές φορές για να λυθεί ένα πρόβλημα πρέπει να ελεγχθεί αν ισχύει κάποια συνθήκη Παράδειγμα 2: Να διαβαστεί ένας αριθμός και να επιστραφεί.
Δυναμικός Κατακερματισμός
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
ΔΟΜΗ ΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΑΝ συνθήκη_ισχύει ΤΟΤΕ εντολές ΤΕΛΟΣ_ΑΝ
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΔΟΜΗ ΓΙΑ (1) Για i από .... μέχρι .... Αν ………….… τότε
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ» Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της.
Οι διάφορες εκδοχές της
ΓΕΜΙΣΜΑ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ (Άσκηση 1)
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (Α.Ε.Π.Π.)
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
Επανάληψη.
Σειριακή ή Γραμμική Αναζήτηση 1.Μοναδικό Κλειδί (key)
8.2 Η Δομή Επανάληψης Μέχρις_ότου
Δισδιάστατοι Πίνακες 3 7 … i γ ρ α μ ή j - στήλη 1 2 M N
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Η τακτοποίηση των κόμβων μίας δομής με μία ιδιαίτερη σειρά είναι μία πολύ σημαντική λειτουργία που ονομάζεται ταξινόμηση (sorting) ή διάταξη (ordering).
ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Εντολές και δομές αλγορίθμου
Δομή Επιλογής , 8.1.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ερωτήματα Επιλογής σε ACCESS
Από τη Δομή Επανάληψης Για στην Όσο
Λυμένα θέματα πανελλαδικών εξετάσεων με υποπρογράμματα
Κυριάκου Νικόλαος Πληροφορικής ΠΕ-20
Από τη Δομή Ακολουθίας στις Δομές Επανάληψης
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

Μονοδιάστατοι πίνακες Κεφάλαια 3, 9

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

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

1η Λύση Μη ταξινομημένη λίστα ονομάτων - τηλεφώνων (Ον1,Τηλ1) (Ον2,Τηλ2) ..........(ΟνΝ,ΤηλΝ) Όνομα Τηλ 1 Παπαδόπουλος Χρ. 2382037456 2 Νικολάου Ανθή 2351052368 3 Κρέμπου Μαρία 2106053362 4 Νικολόπουλος Πέτρος 2315057363 5 Αθηναίος Κώστας 2455022318 6 Βρεττάκος Γιώργος 2525072367 7 Κρανιώτη Γεωργία 2415043261 8 Βαρδάκης Κώστας 2551026367 9 Κάππος Ανδρέας 2638092460

2η Λύση 2 δομές: 1. Ταξινομημένη λίστα ονομάτων-τηλεφώνων (Ον1,Τηλ1) (Ον2,Τηλ2) ....(ΟνΝ,ΤηλΝ) 2. Λίστα με το αρχικό γράμμα των ονομάτων (Α,Ν1) (Β,Ν2) (Γ,Ν3) (Δ,Ν4).....(Ω,Ν24) Ον Τηλ 1 Αθηναίος Κώστας 2382037456 2 Βαρδάκης Κώστας 2351052368 3 Βρεττάκος Γιώργος 2106053362 4 Κάππος Ανδρέας 2315057363 5 Κρανιώτη Γεωργία 2455022318 6 Κρέμπου Μαρία 2525072367 7 Νικολάου Ανθή 2415043261 8 Νικολόπουλος Πέτρος 2551026367 9 Παπαδόπουλος Χρ. 2638092460 Γράμμα Ν Α 1 Β 2 Κ 4 7 Π 9

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

Πίνακες Στατικές δομές δεδομένων που αποθηκεύουν δεδομένα ίδιου τύπου Στατικές δομές δεδομένων που αποθηκεύουν δεδομένα ίδιου τύπου Οποιασδήποτε διάστασης (μονοδιάστατοι (1Δ), δισδιάστατοι (2Δ), Νδιάστατοι). ΧΑΡΑΚΤΗΡΕΣ: Α[7] Ε Θ Κ Ζ Τ Ο Δ Α[4] ΑΚΕΡΑΙΕΣ: Γ[2,2] (τετραγωνικός) ΠΡΑΓΜΑΤΙΚΕΣ: Β[3,2] 4 12 8 9 3.4 5.1 1.0 2.3 8.8 15.0 Β[1,2]

Εκχώρηση τιμών και χρήση Αριθμ[5]  26 Πελάτης[ i ]  “ΙΩΑΝΝΟΥ” ΔΙΑΒΑΣΕ Ημέρα_εβδομάδας[12, 3] ΔΙΑΒΑΣΕ Θερμοκρασία[ i ] Πλήθος  Πλήθος + Αριθμ[6] ΓΡΑΨΕ Πελάτης[ i ] + 4,43 Πίν[ i ]  Πίν[ i ] + 10

Να διαβαστούν οι ηλικίες 100 ανθρώπων ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ΔΙΑΒΑΣΕ Ηλικία ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

...με πίνακα ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ΔΙΑΒΑΣΕ Ηλικία[ i ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Η δομή επανάληψης «ΓΙΑ» είναι η καταλληλότερη για την προσπέλαση των στοιχείων. Ο δείκτης της επανάληψης, χρησιμοποιείται ως δείκτης στα στοιχεία του πίνακα

Να γίνει πρόγραμμα που να διαβάζει 10 ακέραιους αριθμούς και να τους εμφανίζει με την αντίστροφη σειρά. ΠΡΟΓΡΑΜΜΑ Πίνακες ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, Αριθμός[10] ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΡΑΨΕ “ΔΩΣΕ TON “, i, “o ΑΡΙΘΜΟ ” ΔΙΑΒΑΣΕ Αριθμός[ i ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ i ΑΠΟ 10 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1 ΓΡΑΨΕ Αριθμός[ i ] ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

τι εμφανίζουν τα παρακάτω

Χρησιμοποιούμε πίνακες όταν: θέλουμε να διαχειριστούμε πολλά δεδομένα ίδιου τύπου. τα δεδομένα πρέπει να διατηρούνται στη μνήμη μέχρι το τέλος της εκτέλεσης Μειονεκτήματα: Απαιτούν μνήμη Περιορίζουν τις δυνατότητες του προγράμματος

Άσκηση 1 Έστω μονοδιάστατος πίνακας ακέραιων Α, 100 θέσεων σελ 66

Γέμισμα πίνακα ΓΡΑΨΕ ’Δώσε 100 ακέραιους αριθμούς:’ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ΔΙΑΒΑΣΕ Α[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Εκτύπωση πίνακα (1-100) ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ΓΡΑΨΕ Α[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Εκτύπωση πίνακα (100-1) ΓΙΑ i ΑΠΟ 100 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1 ΓΡΑΨΕ Α[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Εκτύπωση αθροίσματος στοιχείων πίνακα και υπολογισμός ΜΟ sum ← 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 sum ← sum + A[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ’Άθροισμα στοιχείων:’, sum ΜΟ ← sum/100 ΓΡΑΨΕ ’Μέσος Όρος στοιχείων =’,ΜΟ

Εκτύπωση αθροίσματος στοιχείων πίνακα στις ζυγές και μονές θέσεις sumα ← 0 sumμ ← 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ΑΝ i mod 2 = 0 ΤΟΤΕ sumα ← sumα + A[i] ΑΛΛΙΩΣ sumμ ← sumμ + A[i] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ’Άθροισμα αριθμών σε άρτιες θέσεις:’,sumα ΓΡΑΨΕ ’Άθροισμα αριθμών σε μονές θέσεις:’,sumμ

Γινόμενο 10 πρώτων στοιχείων GIN ← 1 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 GIN ← GIN * A[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ’Το γινόμενο των 10 πρώτων αριθμών :’,GIN

Αντιμετάθεση των συμμετρικών στοιχείων Διορθώστε στο βιβλίο

Άθροισμα 50 πρώτων και 50 τελευταίων στοιχείων και έλεγχος ισότητάς τους

Διορθώστε στο βιβλίο

Πλήθος στοιχείων μικρότερων του ΜΟ

Αναζήτηση της τιμής «42»

ΔΤ1 σελ. 33 Σε μία κατασκήνωση υπάρχουν 300 παιδιά και καθένα από αυτά έχει μοναδικό αριθμό από το 1 έως και το 300 που του αντιστοιχεί. Για κάθε παιδί είναι γνωστή η ηλικία του. Να χρησιμοποιηθεί η δομή του πίνακα για να αποθηκεύονται οι ηλικίες των παιδιών και να βρεθεί ο κατάλληλος αλγόριθμος υπολογισμού του μικρότερου και μεγαλύτερου σε ηλικία παιδιού και να εκτυπώνεται τόσο η ηλικία όσο και ο κωδικός του μικρότερου και μεγαλύτερου παιδιού.

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 300 ΔΙΑΒΑΣΕ ΗΛ[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΙΝΗΛ[1] ΘΜΙΝ1 ΑΝ ΗΛ[ι]<ΜΙΝ ΤΟΤΕ ΜΙΝΗΛ[ι] ΘΜΙΝι ΤΕΛΟΣ_ΑΝ ΜΑΧΗΛ[1] ΘΜΑΧ1 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 300 ΑΝ ΗΛ[ι]>ΜΑΧ ΤΟΤΕ ΜΑΧΗΛ[ι] ΘΜΑΧι ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ “Μικρότερος μαθητής ο”, ΘΜΙΝ, “με ηλικία”, ΜΙΝ ΓΡΑΨΕ “Μεγαλύτερος μαθητής ο”, ΘΜΑΧ, “με ηλικία”, ΜΑΧ

Παράλληλοι πίνακες Ονόματα βαθμοί Να βρείτε και να εμφανίσετε τα ονόματα των μαθητών με βαθμολογία χαμηλότερη του μέσου όρου Γεωργιάδης Ευσταθίου Βασιλείου Γρηγορίου Νικολάου 17 20 15 13 18

1. Εισαγωγή στοιχείων στους πίνακες ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ ‘Δωσε το ονομα και τη βαθμολογία του’,ι,’ου μαθητή’ ΔΙΑΒΑΣΕ Ο[Ι], Β[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

2. Εύρεση του ΜΟ Σ0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5 ΣΣ+Β[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟΣ/5

3. Εύρεση των χαμηλότερων του ΜΟ ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5 ΑΝ Β[ι]<ΜΟ ΤΟΤΕ ΓΡΑΨΕ Ο[ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δείτε επίσης παράδειγμα 4.8, σελ. 63-64 Ασκήσεις (σελ. 75): 1, 2, 3, 4, 5, 6, 7, 8

Σειριακή αναζήτηση – Πολλαπλές εμφανίσεις Γεωργιάδης Ευσταθίου Βασιλείου Γρηγορίου Νικολάου Να αναζητήσετε πόσες φορές και σε ποιες θέσεις βρίσκεται ένα όνομα. Αν δε βρεθεί, εμφανίστε το κατάλληλο μήνυμα

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 8 ΔΙΑΒΑΣΕ ΟΝ[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ Κ πλ0 ΑΝ ΟΝ[ι]=Κ ΤΟΤΕ ΓΡΑΨΕ ι πλπλ+1 τέλος_αν ΑΝ πλ>0 ΤΟΤΕ ΓΡΑΨΕ “βρέθηκε ”,πλ,” φορές” ΑΛΛΙΩΣ ΓΡΑΨΕ “το όνομα δε βρέθηκε ” ΤΕΛΟΣ_ΑΝ

Σειριακή αναζήτηση – Το πολύ μία εμφάνιση Γεωργιάδης Ευσταθίου Βασιλείου Γρηγορίου Νικολάου Αναγνώστου Γεωργίου Κωνσταντίνου Να αναζητήσετε ένα όνομα στον πίνακα. Αν βρεθεί, σταματήστε την αναζήτηση και εμφανίστε τη θέση του. Αν δε βρεθεί, εμφανίστε το κατάλληλο μήνυμα

Αλγόριθμος Sequential_Search Δεδομένα // n, table, key // done ← ψευδής position ← 0 i ← 1 Όσο (done=ψευδής) και (i<=n) επανάλαβε Αν table[i]=key τότε done ← αληθής position ← i αλλιώς i ← i+1 Τέλος_αν Τέλος_επανάληψης Αποτελέσματα //done, position // Τέλος Sequential_Search

Δυαδική Αναζήτηση Σε ΤΑΞΙΝΟΜΗΜΕΝΟ πίνακα Το στοιχείο μπορεί να υπάρχει ή όχι

Αναζήτηση του στοιχείου 38 (υπάρχει στον πίνακα) Αναζήτηση του στοιχείου 38 (υπάρχει στον πίνακα) Right Left

Αναζήτηση του στοιχείου 39 (δεν υπάρχει στον πίνακα) Right Left Χρειάζονται δύο δείκτες: Left, Right

Εισαγωγή στοιχείων στον πίνακα (20 θέσεων) ΓΡΑΨΕ 'Οι αριθμοί που θα δοθούν πρέπει να είναι ταξινομημένοι κατά αύξουσα τάξη’ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20     ΓΡΑΨΕ 'Δώσε το', i, ' στοιχείο του πίνακα'     ΔΙΑΒΑΣΕ A[i]   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αρχικοποιήσεις ΓΡΑΨΕ 'Δωσε τιμή για αναζήτηση: '     ΔΙΑΒΑΣΕ S     Left  1     Right  20     k  0     f  ΨΕΥΔΗΣ

Πώς βρίσκουμε το μεσαίο στοιχείο; Right Left M Left = 1 Right = 15 M = 8 Right Left Left = 1 Right = 6 M = 3 M 1 2 5 8 10 23

Αναζήτηση ΟΣΟ (Left <= Right) ΚΑΙ (f = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ       M   (Left + Right) DIV 2       ΑΝ A[M] = S ΤΟΤΕ         k  M         f  ΑΛΗΘΗΣ       ΑΛΛΙΩΣ         ΑΝ A[M] < S ΤΟΤΕ           Left  M + 1         ΑΛΛΙΩΣ           Right M - 1         ΤΕΛΟΣ_ΑΝ       ΤΕΛΟΣ_ΑΝ  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αποτελέσματα ΑΝ f = ΑΛΗΘΗΣ ΤΟΤΕ ΓΡΑΨΕ "Το στοιχείο,", S, "υπάρχει στη θέση:", k ΑΛΛΙΩΣ ΓΡΑΨΕ "Το στοιχείο,", S, " δεν υπάρχει στον πίνακα» ΤΕΛΟΣ_ΑΝ

Άσκηση Να γίνει βελτιστοποίηση του αλγορίθμου δυαδικής αναζήτησης, έτσι ώστε να επιτρέπει διαδοχικές αναζητήσεις πολλών στοιχείων. Η αναζήτηση να τερματίζεται με την ερώτηση "Θέλετε άλλη αναζήτηση (Ν/Ο)"

Συγχώνευση 1 3 4 6 9 11 13 2 5 7 8 10 12 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Συγχώνευση Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[4]; i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[4]; Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[3]; Είναι το Α[7] μικρότερο ή ίσο απ’ το Β[6]; Είναι το Α[4] μικρότερο ή ίσο απ’ το Β[3]; Είναι το Α[6] μικρότερο ή ίσο απ’ το Β[6]; Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[5]; Είναι το Α[2] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[1] μικρότερο ή ίσο απ’ το Β[1]; Είναι το Α[7] μικρότερο ή ίσο απ’ το Β[7]; Είναι το Α[2] μικρότερο ή ίσο απ’ το Β[1]; Είναι το Α[3] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[4] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[6] μικρότερο ή ίσο απ’ το Β[5]; 1 3 4 6 9 11 13 Α Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 2 5 7 8 10 12 14 15 Β k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=9 k=10 k=11 k=12 k=13 k=14 k=15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Γ

Αντέγραψε τα στοιχεία που περίσσεψαν Συγχώνευση i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[4]; Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[3]; Είναι το Α[7] μικρότερο ή ίσο απ’ το Β[6]; Είναι το Α[4] μικρότερο ή ίσο απ’ το Β[3]; Είναι το Α[6] μικρότερο ή ίσο απ’ το Β[6]; Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[5]; Είναι το Α[2] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[1] μικρότερο ή ίσο απ’ το Β[1]; Είναι το Α[7] μικρότερο ή ίσο απ’ το Β[7]; Είναι το Α[2] μικρότερο ή ίσο απ’ το Β[1]; Είναι το Α[3] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[4] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[6] μικρότερο ή ίσο απ’ το Β[5]; 1 3 4 6 9 11 13 Α Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 Αντέγραψε τα στοιχεία που περίσσεψαν 2 5 7 8 10 12 14 15 Β k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=9 k=10 k=11 k=12 k=13 k=14 k=15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Γ

Αντέγραψε τα στοιχεία που περίσσεψαν Συγχώνευση i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 Όσο i ≤ N και j ≤ M επανάλαβε Αν Α[i] < Β[j] τότε Γ[k] ← Α[i] k ← k+1 i ← i+1 Αλλιώς Γ[k] ← Β[j] k ← k+1 j ← j+1 Τέλος_αν Τέλος_επανάληψης Αν i>N τότε Για z από k μέχρι N+M Γ[z] ← Β[j] j ← j+1 Τέλος_επανάληψης Αλλιώς Για z από k μέχρι N+M Γ[z] ← Α[i] i ← i+1 Τέλος_επανάληψης Τέλος_αν 1 3 4 6 9 11 13 Α j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 2 5 7 8 10 12 14 15 Β Αντέγραψε τα στοιχεία που περίσσεψαν Είναι το Α[2] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[2] μικρότερο ή ίσο απ’ το Β[1]; Είναι το Α[6] μικρότερο ή ίσο απ’ το Β[6]; Είναι το Α[7] μικρότερο ή ίσο απ’ το Β[7]; Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[5]; Είναι το Α[6] μικρότερο ή ίσο απ’ το Β[5]; Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[3]; Είναι το Α[1] μικρότερο ή ίσο απ’ το Β[1]; Είναι το Α[7] μικρότερο ή ίσο απ’ το Β[6]; Είναι το Α[4] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[4] μικρότερο ή ίσο απ’ το Β[3]; Είναι το Α[3] μικρότερο ή ίσο απ’ το Β[2]; Είναι το Α[5] μικρότερο ή ίσο απ’ το Β[4]; Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το i και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα Αύξησε το j και το k κατά ένα k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=9 k=10 k=11 k=12 k=13 k=14 z=14 z=15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Γ

Ταξινόμηση Δοθέντων των στοιχείων a1,a2,...,an η ταξινόμηση συνίσταται στη μετάθεση (permutation) της θέσης των στοιχείων, ώστε να τοποθετηθούν σε μία σειρά ak1,ak2,...,akn έτσι ώστε, δοθείσης μίας συνάρτησης διάταξης (ordering function), f, να ισχύει: f(ak1) ≤ f(ak2) ≤ ... ≤ f(akn)

Ταξινόμηση ευθείας ανταλλαγής ή φυσαλίδας

Αλγόριθμος Αλγόριθμος Φυσσαλίδα Δεδομένα // table, n // Για i από 2 μέχρι n Για j από n μέχρι i με_βήμα –1 Αν table[j-1] > table[j] τότε αντιμετάθεσε table[j-1], table[j] Τέλος_αν Τέλος_επανάληψης Αποτελέσματα // table // Τέλος Φυσσαλίδα

αντιμετάθεσε table[j-1], table[j] temp ← table[j-1] table[j-1] ← table[j] table[j] ← temp

Σε μια πόλη διενεργείται δημοψήφισμα για ένα φλέγον ζήτημα που αριθμεί 5 απαντήσεις. Να αναπτύξετε πρόγραμμα το οποίο θα διαβάζει τις ψήφους που έλαβε η κάθε απάντηση από τους 50.000 κατοίκους της πόλης και να εκτυπώνει τα ποσοστά που έλαβαν καθεμιά από τις απαντήσεις με φθίνουσα διάταξη.

Ταξινόμηση με επιλογή

Αλγόριθμος Selection_Sort Δεδομένα // table, n // Για i από 1 μέχρι n-1    k  i    x  table[i]     Για j από i+1 μέχρι n         Αν x > table[j] Τότε            k  j            x  table[j]     Τέλος_Επανάληψης    table[k]  table[i]     table[i]  x  Τέλος_ επανάληψης

Δομές Δεδομένων δευτερεύουσας μνήμης Συνήθως η κύρια μνήμης δεν επαρκεί για την αποθήκευση των δεδομένων. Χρησιμοποιούνται δομές δευτερεύουσας μνήμης, τα αρχεία (files) διατηρούνται ακόμη και μετά τον τερματισμό ενός προγράμματος

Οργάνωση εγγραφές (records): αποτελούται από ένα ή περισσότερα πεδία (fields) π.χ. η εγγραφή ενός μαθητή με πεδία: Αριθμός Μητρώου, Ονοματεπώνυμο, ‘Ετος Γέννησης, Τάξη, Τμήμα. Αριθμός Μητρώου  πρωτεύον κλειδί (primary key) ή απλά κλειδί. Ονοματεπώνυμο  δευτερεύον κλειδί (secondary keys), αν υπάρχει πρωτεύον κλειδί.