Γενικό Λύκειο > Ταξινόμηση

Ταξινόμηση Μονοδιάστατου και πάλι πίσω

(1/1)

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

--- Κώδικας: ---Αλγόριθμος Ταξινόμηση_και_πισω

Για ι από 1 μέχρι 5
  Διάβασε Π[ι] !πίνακας 5 στοιχείων. Επεκτείνεται για ν στοιχεία
Τέλος_επανάληψης

Για ι από 1 μέχρι 4
  Για ξ από 1 μέχρι 8 ! 2*ν - 2
    ΠΙΣΩ[ι, ξ] ← 0   !0 δισδιάστατος πίνακας να έχει αρχικά τιμή μηδέν
  Τέλος_επανάληψης
Τέλος_επανάληψης

Για ι από 2 μέχρι 5
  κ ← 1
  Για ξ από 5 μέχρι ι με_βήμα -1
    Αν Π[ξ - 1] > Π[ξ] τότε
      Αντιμετάθεσε Π[ξ - 1], Π[ξ]
      ΠΙΣΩ[ι - 1, κ] ← ξ - 1     !γιατί η προσπέλαση down-to-top ξεκινάει από 2
      ΠΙΣΩ[ι - 1, κ + 1] ← ξ
      κ ← κ + 2
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης

Για ι από 1 μέχρι 5
  Εμφάνισε Π[ι] !εμφάνιση των στοιχείων ταξινομημένων σε αύξουσα σειρά
Τέλος_επανάληψης

!πάω προς τα πίσω
Για ι από 4 μέχρι 1 με_βήμα -1
  Για ξ από 8 μέχρι 2 με_βήμα - 2
    Αν ΠΙΣΩ[ι, ξ] ≠ 0 τότε
      Αντιμετάθεσε Π[ΠΙΣΩ[ι, ξ]], Π[ΠΙΣΩ[ι, ξ - 1]]
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης

Για ι από 1 μέχρι 5
  Εμφάνισε Π[ι]  !εμφάνιση της αρχικής κατάστασης του πίνακα
Τέλος_επανάληψης
Τέλος Ταξινόμηση_και_πισω
--- Τέλος κώδικα ---

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

Πλοήγηση

[0] Λίστα μηνυμάτων

Μετάβαση στην πλήρη έκδοση