Εναλλακτική ταξινόμηση...

Ξεκίνησε από meteo_xampos, 07 Δεκ 2023, 11:37:10 ΠΜ

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

meteo_xampos

Καλημέρα σας!!! Αν σε ένα τελευταίο ερώτημα σε θέμα Δ ας πούμε, τα παιδιά κληθούν να εμφανίσουν τους μαθητές πχ από τον καλύτερο προς το χειρότερο σε πίνακες πχ ΟΝ[5] και Β[5], ο παρακάτω κώδικας θα είναι αποδεκτός έτσι; 
 
Για ι από 1 μέχρι 5

  Διάβασε ΟΝ[ι], Β[ι] 

Τέλος_επανάληψης

Για κ από 1 μέχρι 5

  μαξ ← 0

  Για ι από 1 μέχρι 5

    Αν Β[ι] > μαξ τότε

      μαξ ← Β[ι] 

      θ ← ι

    Τέλος_αν

  Τέλος_επανάληψης

  Γράψε ΟΝ[θ] 

  Β[θ] ← -1 ! βάζουμε κάτι άκυρο να μην λαμβάνεται υπόψιν στην εύρεση μαξ

  ΟΝ[θ] ← ' '

Τέλος_επανάληψης
Βέβαια ο κώδικας αυτός παίζει σε πίνακες με θετικούς αριθμούς μόνο... Τι λέτε;

kdimitris

Καλημέρα
Προφανώς και δεν είναι αλγόριθμος ταξινόμησης (αφού δεν αναδιατάσσονται τα στοιχεία μέσα στον πίνακα) άλλα προφανώς και είναι σωστό σε ότι αφορά το αποτέλεσμα (να εμφανίζει σε φθίνουσα σειρά). Είναι μια λύση !
Παρατηρήσεις:
1. Μοιάζει αρκετά με την ταξινόμηση με επιλογή (selection sort) όπου εκεί απλά αντιμεταθέτει ανάμεσα στους 2 βρόχους επανάληψης το εκάστοτε πρώτο στοιχείο με το στοιχείο στην θέση θ.
2. Εαν η άσκηση ζητάει κάτι περισσότερο (πχ ισοβαθμία) η λύση αυτή θα ήταν δύσκολο να προσαρμοστεί.
3. Επίσης πάντα λέω στους μαθητές μου θέλει προσοχή εαν ένα ερώτημα που υπονοεί ταξινόμηση είναι τελευταίο ερώτημα ή αν ακολουθούν και άλλα. Αν έχει και άλλο ερώτημα, τότε αυτό ίσως βασίζεται στο γεγονός ότι ο πίνακας θα είναι ταξινομημένος προκειμένου να λυθεί. Στην περίπτωση αυτή εαν υπάρχουν και άλλα επόμενα ερωτήματα θα πρέπει να σκεφτεί ο μαθητής ότι ο πίνακας χάνει τις αρχικές του τιμές. Βέβαια μπορούν πάντα να εκχωρήσουν τις αρχικές τιμές σε 2 νέους (ΟΝ2, Β2) "κλώνους των αρχικών" και να εφαρμόσει την λύση στους κλώνους και όχι στους αρχικούς ώστε να απαντήσει τα επόμενα (εαν υπάρχουν ερωτήματα)
4. Ένα τελευταίο το οποίο δεν είμαι και πολύ περήφανος που το αναφέρω είναι ότι πάντα πρέπει να "κερδίζεις" και τον εξεταστή σου. Δηλαδή η λύση που θα δώσεις να γίνει αντιληπτή από αυτόν που θα κληθεί να το διορθώσει. Οπότε ίσως μερικά σχόλια βοηθήσουν προς αυτήν την κατεύθυνση. Πάντα υπάρχουν και μερικοί εξεταστές οι οποίοι εαν δουν κάτι όχι συνηθισμένο ενδεχομένως να έχουν μια αρνητική προδιάθεση απέναντι στην λύση αυτή. Οπότε ο σχολιασμός πάντα βοηθάει!

Εμένα πάντως ως λύση από μαθητή θα την επιβράβευα καθώς δείχνει κάποιον ο οποίος έκατσε και ασχολήθηκε. Θα του επισήμανα όμως τις παρατηρήσεις 2,3 και 4 ώστε να μην υιοθετήσει αυτήν την λύση και αγνοήσει τον κλασικό αλγόριθμο ταξινόμησης

evry

Προφανώς και είναι αλγόριθμος ταξινόμησης.
Απλά δεν είναι αλγόριθμος ταξινόμησης της κατηγορίας comparison sort.
Για παράδειγμα η Counting Sort δεν συγκρίνει στοιχεία μεταξύ τους και δεν κάνει αντιμεταθέσεις όμως θεωρείται αλγόριθμος ταξινόμησης.
https://en.wikipedia.org/wiki/Counting_sort
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Γιαννούλης Γιώργος

Επίσης δε δουλεύει μόνο για θετικούς αριθμους. Αρκεί στην αρχή να βρείς τον ελάχιστο(μιν) πριν αρχίσεις και να βάζεις κάθε φορά την τιμή μιν-1 στο κελί αντί του -1 σε αυτό που εμφανίζεις.

dimitrios67

Βέβαια υπάρχει ένα μικρό πρόβλημα, ότι δηλ. "χαλάει" ο πίνακας.
Σαν εκτύπωση παίρνουμε τα στοιχεία ταξινομημένα, αλλά ένα-ένα "χάνονται".
Είναι πολύ κοντά στο selection sort και έχει την "ιδέα" της ταξινόμησης,
αλλά πρέπει να γίνει και αντιμετάθεση στοιχείων.