Μονοδιάστατοι πίνακες Κεφάλαια 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), αν υπάρχει πρωτεύον κλειδί.