Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Μονοδιάστατοι πίνακες => Γ΄ Λυκείου => Ταξινόμηση => Μήνυμα ξεκίνησε από: Sergio στις 27 Φεβ 2011, 05:26:54 πμ

Τίτλος: Άσκηση με Ταξινόμηση επιμέρους τμημάτων πίνακα
Αποστολή από: Sergio στις 27 Φεβ 2011, 05:26:54 πμ
Μία από τις ασκήσεις που μπορούν να λειτουργήσουν ως ευκαιρία εμπέδωσης του μηχανισμού της ταξινόμησης αλλά, περισσότερο, να βοηθήσει στην ανάπτυξη της φαντασίας τους σχετικά με τη χρήση των πινάκων σε προβλήματα

Τα ονόματα και τα επίθετα των 300 μαθητών ενός σχολικού συγκροτήματος βρίσκονται καταχωρημένα σε πίνακες Ο και Ε αντίστοιχα.  Στην αρχή του πίνακα βρίσκονται τα στοιχεία για τους 80 μαθητές του δημοτικού, στη συνέχεια τα στοιχεία των 120 μαθητών του Γυμνασίου και τέλος των 100 μαθητών του Λυκείου.  Να σχεδιάσετε αλγόριθμο που να ταξινομεί τα στοιχεία των μαθητών του συγκροτήματος αλφαβητικά με βάση το επίθετο και το όνομα, διατηρώντας τους χωρισμένους κατά βαθμίδα.
Τίτλος: Απ: Άσκηση με Ταξινόμηση επιμέρους τμημάτων πίνακα
Αποστολή από: gpapargi στις 27 Φεβ 2011, 09:39:55 μμ
Θα έφτιαχνα μια διαδικασία που δέχεται σαν παραμέτρους τον πινάκα (η τους πινάκες) και 2 θέσεις που σηματοδοτούν το αρχικό και το τελικό σημείο ταξινόμησης. Μετά θα καλούσα τη διαδικασία 3 φόρες. Αν θέλω να γενικεύσω μπορώ να βάλω τα άκρα σε πινάκα και να σαρώσω επαναληπτικά καλώντας γα κάθε ζευγάρι άκρων τη διαδικασία.
Τίτλος: Απ: Άσκηση με Ταξινόμηση επιμέρους τμημάτων πίνακα
Αποστολή από: Sergio στις 28 Φεβ 2011, 12:55:22 πμ
Όντως υπάρχουν πολλές λύσεις για το συγκεκριμένο πρόβλημα..

Αφού ο μαθητής δώσει τη δική του, εφόσον υπάρχει χρόνος, μπορούν να παρουσιαστούν και καποιες από τις υπόλοιπες ώστε να διαπιστωθούν συγκριτικά πλεονεκτήματα και μειονεκτήματα..

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[κ] ..

Τι λέτε; Να σχολιάσουμε τα σχετικά πλεονεκτήματα και μειονεκτήματα της κάθε λύσης ;