Μία από τις ασκήσεις που μπορούν να λειτουργήσουν ως ευκαιρία εμπέδωσης του μηχανισμού της ταξινόμησης αλλά, περισσότερο, να βοηθήσει στην ανάπτυξη της φαντασίας τους σχετικά με τη χρήση των πινάκων σε προβλήματα
Τα ονόματα και τα επίθετα των 300 μαθητών ενός σχολικού συγκροτήματος βρίσκονται καταχωρημένα σε πίνακες Ο και Ε αντίστοιχα. Στην αρχή του πίνακα βρίσκονται τα στοιχεία για τους 80 μαθητές του δημοτικού, στη συνέχεια τα στοιχεία των 120 μαθητών του Γυμνασίου και τέλος των 100 μαθητών του Λυκείου. Να σχεδιάσετε αλγόριθμο που να ταξινομεί τα στοιχεία των μαθητών του συγκροτήματος αλφαβητικά με βάση το επίθετο και το όνομα, διατηρώντας τους χωρισμένους κατά βαθμίδα.
Θα έφτιαχνα μια διαδικασία που δέχεται σαν παραμέτρους τον πινάκα (η τους πινάκες) και 2 θέσεις που σηματοδοτούν το αρχικό και το τελικό σημείο ταξινόμησης. Μετά θα καλούσα τη διαδικασία 3 φόρες. Αν θέλω να γενικεύσω μπορώ να βάλω τα άκρα σε πινάκα και να σαρώσω επαναληπτικά καλώντας γα κάθε ζευγάρι άκρων τη διαδικασία.
Όντως υπάρχουν πολλές λύσεις για το συγκεκριμένο πρόβλημα..
Αφού ο μαθητής δώσει τη δική του, εφόσον υπάρχει χρόνος, μπορούν να παρουσιαστούν και καποιες από τις υπόλοιπες ώστε να διαπιστωθούν συγκριτικά πλεονεκτήματα και μειονεκτήματα..
1) Τρεις διαδοχικές ταξινομήσεις:
Για ι από 2 μέχρι 80
Για κ από 80 μέχρι ι με_βήμα -1
..
Για ι από 82 μέχρι 200
Για κ από 200 μέχρι ι με_βήμα -1
..
Για ι από 202 μέχρι 300
Για κ από 300 μέχρι ι με_βήμα -1
..
2) Δημιουργία πίνακα βαθμίδας (1, 2 ή 3) για κάθε μαθητή. Στη συνέχεια ταξινόμηση με τη βαθμίδα ως πρωτεύον κριτήριο και στη συνέχεια επίθετο και όνομα
Για ι από 1 μέχρι 80
Β[ι] <- 1
Τέλος_επανάληψης
Για ι από 81 μέχρι 200
Β[ι] <- 2
Τέλος_επανάληψης
Για ι από 201 μέχρι 300
Β[ι] <- 3
Τέλος_επανάληψης
Για ι από 2 μέχρι 300
Για κ από 300 μέχρι ι με_βήμα -1
Αν Β[κ] < Β[κ-1] Ή
(Β[κ] = Β[κ-1] ΚΑΙ Ε[κ] < Ε[κ-1]) Ή
(Β[κ] = Β[κ-1] ΚΑΙ Ε[κ] = Ε[κ-1] ΚΑΙ Ο[κ]<Ο[κ-1]) τότε
Αντιμετάθεσε Β[κ], Β[κ-1]
Αντιμετάθεσε Ε[κ], Ε[κ-1]
Αντιμετάθεσε ΒΟ[κ], Ο[κ-1]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
3) Ταξινόμηση με .. διακοπές
Για ι από 2 μέχρι 300
Για κ από 300 μέχρι ι με_βήμα -1
Αν κ <> 81 ΚΑΙ κ <> 201 τότε
...
4) Ταξινόμηση με μεταβλητά άκρα και επιλογή
Για ι από 1 μέχρι 3
Αν ι = 1 τότε
Α <- 2
Β <- 80
αλλιώς_αν ι = 2 τότε
Α <- 82
Β <- 200
αλλιώς
Α <- 202
Β <- 300
Τέλος_αν
Για κ από Α μέχρι Β
Για λ από Β μέχρι κ με_βήμα -1
Αν Ε[λ] < Ε[λ-1] ...
5. Ταξινόμηση με μεταβλητά άκρα σε πίνακες
Α[1] <- 2
Β[1] <- 80
Α[2] <- 82
Β[2] <- 200
Α[3] <- 202
Β[3] <- 300
Για ι από 1 μέχρι 3
Για κ από Α[ι] μέχρι Β[ι]
Για λ από Β[ι] μέχρι κ με_βήμα -1
Αν Ε[λ] < Ε[λ-1] ...
6. Ταξινόμηση με μεταβλητά άκρα σε πίνακες και κλήση διαδικασίας
Α[1] <- 2
Β[1] <- 80
Α[2] <- 82
Β[2] <- 200
Α[3] <- 202
Β[3] <- 300
Για ι από 1 μέχρι 3
ΚΑΛΕΣΕ Ταξινόμηση(Ο, Ε, Α[ι], Β[ι])
Τέλος_επανάληψης
..
..
Διαδικασία Ταξινόμηση(Π1, Π2, Α, Β)
..
Για ι από Α μέχρι Β
Για κ από Β μέχρι ι με_βήμα -1
Αν Π1[κ] ..
Τι λέτε; Να σχολιάσουμε τα σχετικά πλεονεκτήματα και μειονεκτήματα της κάθε λύσης ;