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

Ξεκίνησε από nikolasmer, 31 Ιαν 2014, 01:25:45 ΜΜ

« προηγούμενο - επόμενο »

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 τιμές και είδα οτι παίζει. Αν έχει κάποιος όρεξη (μετά από αυτά που συμβαίνουν) να το κοιτάξει ας πει αν υπάρχει λάθος ή τρόπος βελτίωσης.
Ευχαριστώ.
Μερεντίτης Νικόλαος
Πληροφορικός