Μπράβο..
Καλή προσπάθεια!!
Είναι πάντα καλύτερο να προσπαθείς τη λύση μόνος σου παρά να τη βρίσκεις έτοιμη

Όπως σωστά σου είπε και ο Γιώργος:
το έτρεξες εδώ www.pseudoglossa.gr ;
δώσε έναν πίνακα με 10 στοιχεία να δεις, τον ταξινομεί; χρησιμοποίησε και τη βηματική εκτέλεση να δεις τι συμβαίνει.
Έτσι θα εντοπίσεις εύκολα τα σημεία του αλγόριθμού σου που παρουσιάζουν πρόβλημα..
Επειδή η εισαγωγή στοιχείων πίνακα είναι λίγο δύσκολη στο
pseudoglossa.gr, μπορείς να το δοκιμάσεις και στο
διερμηνευτή του Άλκη και να χρησιμοποιήσεις την καρτέλα
αρχείο εισόδου ώστε να μη χρειάζεται να περνάς την ταλαιπωρία της εισαγωγής των δεδομένων εισόδου ξανά και ξανά όσο ελέγχεις - διορθώνεις τον αλγόριθμό σου..
Στο θέμα μας τώρα .. αν προσπαθείς να υλοποιήσεις τη λογική που περιέγραψα παραπάνω, δεν τα πας και άσχημα.. Όμως υπάρχουν λαθάκια λογικής..
Για παράδειγμα..
Η εύρεση του ΜΑΧ δε γίνεται με το σωστό τρόπο.. Η συνθήκη
Αν ΠΙΝ[j]>ΠΙΝ[j-1] τότε μαχ [ i ]<---ΠΙΝ[j]
δεν είναι σωστή.. Σκέψου τι θα βρει ως ΜΑΧ αν τα στοιχεία είναι τα : 2, 15, 7, 8, 10
Όλοι περιμένουμε να βρει το 15. Όμως, ενώ με την πρώτη σύγκριση (15 > 2) θα δείξει να το καταφέρνει, και η δεύτερη (7 > 15) δε θα το .. χαλάσει, Η ΤΡΙΤΗ (8>7) θα «θεωρήσει» ως ΜΑΧ το 8 και η τελευταία (10>8 ), θα βγάλει τελικά «νικητή» το 10
Έπειτα, το γεγονός ότι ο εσωτερικός βρόχος (αυτός που εξετάζει τα στοιχεία του αρχικού πίνακα) ξεκινάει κάθε φορά από μία θέση "παρακάτω", σημαίνει ότι κάθε φορά εξαιρεί από την εξέταση ένα επιπλέον στοιχείο του αρχικού πίνακα. Φαντάζομαι προσπαθείς να εξαιρέσεις τo στοιχείo που έχει ήδη μπει στο νέο.. Δεν κάνεις αυτό όμως.. Εξαιρείς το πρώτο στοιχείο που εξετάστηκε στο προηγούμενο πέρασμα. Αυτό όμως δεν είναι σίγουρα το στοιχείο που επιλέγηκε τελικά ως μέγιστο σε αυτό το «πέρασμα»!. Επομένως, συμβαίνουν δύο λάθη: α. εξαιρείς ένα στοιχείο που (ίσως) δεν πρέπει β. ξαναεξετάζεις (ίσως) το στοιχείο που τελικά επιλέγηκε.
Για παράδειγμα.. Αν ο πίνακάς σου αρχικά είχε τα: 7, 15, 2, 3, 4
και θεωρήσουμε ότι η εύρεση του ΜΑΧ είχε γίνε σωστά.. το πρώτο που θα είχες βρει (εξετάζοντας όλα τα στοιχεία) θα ήταν το 15.. Στο επόμενο πέρασμα όμως, ΔΕΝ θα εξετάσεις το 7 (που είναι και το ..νέο μέγιστο) ενώ θα ΞΑΝΑεξετάσεις το 15 (που ήθελες να εξαιρέσεις)..
και άλλα μικρά διάφορα τα οποία πιθανόν να εντόπιζες και να διόρθωνες αν «έτρεχες» τον αλγόριθμο με το χέρι ή με τη βοήθεια του pseudoglossa ή του Διερμηνευτή..
Απ' ότι καταλαβαίνω, προσπαθείς να δημιουργήσεις, από τον πίνακα ΠΙΝ, τον πίνακα ΜΑΧ που θα έχει τα ίδια στοιχεία (με τον ΠΙΝ), όμως με τη σωστή σειρά.. Κάτι σαν:
Αλγόριθμος Ταξινόμηση_Επιλογής
Δεδομένα // ΠΙΝ, Ν//
ΓΙΑ κάθε θέση του ΜΑΧ
Βρες το μεγαλύτερο στοιχείο του ΠΙΝ που ΔΕΝ έχει εισαχθεί στον ΜΑΧ
Βάλε το στον ΜΑΧ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Αποτελέσματα //ΜΑΧ//
Τέλος Ταξινόμηση_Επιλογής
Η
δυσκολία βρίσκεται στο βήμα: «..
Βρες το μεγαλύτερο στοιχείο του ΠΙΝ που ΔΕΝ έχει εισαχθεί στον ΜΑΧ..»
Ένας τρόπος θα ήταν να ελέγξεις αν υπάρχει ήδη στον ΜΑΧ.. Αυτό μπορείς να το κάνεις με μία σειριακή αναζήτηση (του στοιχείου που εξετάζεις) στον πίνακα ΜΑΧ.. Σκέψου όμως ότι η ίδια τιμή μπορεί να υπάρχει περισσότερες από μία φορές στον ΠΙΝ.. Σε αυτή την περίπτωση, θα την έβρισκες στον ΜΑΧ οπότε ΔΕΝ θα την έβαζες !! Αυτό θα ήταν χρήσιμο εάν το προσπαθούσες να βάλεις όλες τις τιμές από μία φορά.. όμως δεν είναι αυτό το ζητούμενο εδώ.. ΟΛΕΣ οι τιμές πρέπει να περιέχονται στον ΜΑΧ.. Και αν μία τιμή υπάρχει 2 ή και περισσότερες φορές, θα πρέπει να μπει στον ΜΑΧ όλες τις φορές. Απλά θα είναι όλες οι τιμές δίπλα-δίπλα στο νέο, ταξινομημένο, πίνακα. Επομένως θα πρέπει να σκεφτείς άλλο τρόπο για να ελέγξεις αν η τιμή (του ΠΙΝ) που εξετάζεις έχει ήδη μπει στον ΜΑΧ..
Θα μπορούσες λοιπόν να «σημειώνεις» για κάθε τιμή του ΠΙΝ εάν έχει μπει στον ΜΑΧ. Αυτό μπορεί να γίνει με έναν «παράλληλο» πίνακα με
σημαίες (πίνακα
λογικών τιμών), για παράδειγμα
Μπήκε[Ν]!!
Για κάθε τιμή του ΠΙΝ που επιλέγεται να μπει στον ΜΑΧ, σημειώνεται
μπήκε της ως ΑΛΗΘΗΣ. Έτσι θα μπορούσες να αποφύγεις να την ξαναεξετάσεις.. (Αν μπήκε[ αυτό ] = ΨΕΥΔΗΣ ΚΑΙ ΠΙΝ[ αυτό ] > μέγιστο ΤΟΤΕ μέγιστο <- ΠΙΝ[ αυτό ])
Όταν τελικά βρεθεί το μέγιστο, αφού το βάλεις στο νέο πίνακα.. σηκώνεις και τη σημαία του ώστε την ..επόμενη φορά να μην το ξαναεξετάσεις (μπήκε[το_μέγιστο] <- ΑΛΗΘΗΣ).. Φαντάζομαι καταλαβαίνεις πως για να γίνει αυτό θα πρέπει να «θυμάσαι» τη θέση του

Μία ακόμα
δυσκολία είναι το πώς θα κάνεις την
αρχικοκοποίηση στο μηχανισμό εύρεσης του μέγιστου.. Συνήθως ως αρχική τιμή δίνουμε το πρώτο στοιχείο του πίνακα και στη συνέχεια εξετάζουμε τα υπόλοιπα. Όπως έχει όμως εδώ η κατάσταση, το πρώτο στοιχείο του πίνακα μπορεί να έχει ήδη εισαχθεί.. Θα πρέπει λοιπόν να εντοπίσεις το πρώτο στοιχείο που ΔΕΝ έχει εισαχθεί και με αυτό να κάνεις την αρχικοποίηση !! Αυτό γίνεται αρκετά εύκολα αφού έχεις τις «σημαίες»
Τι λες.. δεν το ξαναπροσπαθείς; Τη λύση που σου περιγράφω την έχω ήδη κωδικοποιήσει και ελέγξει με το pseudoglossa.gr οπότε μπορώ να την αναρτήσω εδώ εάν χρειαστεί, όμως πραγματικά πιστεύω πως αν το καταφέρεις μόνος σου θα κερδίσεις πολλλλλλλλαπλά !!
Όσο για τη λύση που σου προτείνει ο Γιώργος, είναι πραγματικά η λύση που "διδάσκεται" !! Επειδή όμως η δική σου πλησιάζει περισσότερο σε αυτό που θα "..έκανες με το χέρι.." θα σου πρότεινα αρχικά να ξαναπροσπαθήσεις τη σκέψη σου.. Μόλις την καταφέρεις, στη συνέχεια αξίζει τον κόπο να δοκιμάσεις και την πρόταση του Γιώργου (gthal) και να μελετήσεις τις διαφορές ..
Έτσι το κέρδος σου θα είναι ΔΙΠΛΟ

Εξάλλου, μόλις καταφέρεις να κάνεις την ιδέα σου αλγόριθμο, θα διαπιστώσεις ότι:
1. έχεις κάνει αλγόριθμο, ΑΚΡΙΒΩΣ αυτό που θα έκανες στην πράξη και με .. το χέρι και
2. έχεις αφήσει τον αρχικό πίνακα στην κατάσταση που ήταν
Αντε.. give it a go !!