Ασκήσεις σαν αυτή του συναδέλφου mxeg πιο πριν (Απάντηση #9 εστάλη: Μάρτος 18th, 2003, 7:37pm» προσφέρονται για εξάσκηση των μαθητών και καλύτερη κατανόηση (εμβάθυνση) στον τρόπο λειτουργίας του αλγόριθμου της φυσσαλίδας.
Με αφορμή μια τέτοια άσκηση "...θα εμφανίζει τους 5 μικρότερους μισθούς ..." μπορεί ο μαθητής να παρακινηθεί να παρατηρήσει ότι είναι περιττό (και μάταιο) να ταξινομήσουμε ολόκληρο τον πίνακα όταν το μόνο που ενδιαφέρει είναι ...οι πέντε μικρότεροι. Σε αυτό το σημείο μπορούμε να εξηγήσουμε (ή να θυμίσουμε από το μάθημα) ότι στον αλγόριθμο της φυσσαλίδας, κάθε επανάληψη του εξωτερικού βρόχου, εξασφαλίζει την 'άνοδο' της επόμενης φυσσαλίδας... στη θέση .... (i-1)
| Φυσσαλίδα στη
i | θέση (του πίνακα)
-------------------------
2 | 1
3 | 2
4 | 3
5 | 4
.
. κ.ο.κ.
Δηλ. μετά από κάθε μία επανάληψη, στην 'κορυφή' του πίνακα θα προστίθεται ακόμα μία φυσσαλίδα, η επόμενη στη σειρά.
Έτσι μπορεί να οδηγηθεί στη σκέψη ότι δεν είναι απαραίτητη η εκτέλεση όλων των επαναλήψεων του εξωτερικού βρόχου...αρκεί να γίνουν τόσες επαναλήψεις όσα (μικρότερα ή μεγαλύτερα) στοιχεία θέλουμε να βρούμε.
Στο συγκεκριμένο πρόβλημα, επομένως, θα αρκεί η λύση:
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 6
ΓΙΑ j ΑΠΟ 150 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
αντιμετάθεσε μισθός[j], μισθός[j-1]
αντιμετάθεσε όνομα[j], όνομα[j-1]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Αυτό το σκεπτικό μπορεί να εφαρμοστεί σε πολλές παρόμοιες ασκήσεις οπότε να αποφεύγεται η ανώφελη ταξινόμηση του συνόλου των στοιχείων, όπως στη επόμενη άσκηση:
_______________________________________________________________________
Το άγημα που θα εκπροσωπήσει μία στρατιωτική μονάδα στην παρέλαση της 25ης Μαρτίου αποτελείται από τους 40 ψηλότερους οπλίτες της μονάδας. Κατασκευάστε πρόγραμμα που θα ζητάει το όνομα και το ύψος για κάθε ένα από του 2200 οπλίτες της μονάδας και θα εμφανίζει τα ονόματα αυτών που θα αποτελέσουν το άγημα της παρέλασης. Φροντίστε ώστε η λύση που θα δώσετε να ΜΗΝ ΤΑΞΙΝΟΜΕΙ ΤΟ ΣΥΝΟΛΟ των στοιχείων προκειμένου να επιλέξει μόνο αυτούς που 'επιλέγονται'