Ταξινόμηςη Ετθείαρ Ανσαλλαγήρ (Φτςαλίδα) και με Επιλογή
Η σακσοποίηςη σων κόμβων μίαρ δομήρ με μία ιδιαίσεπη ςειπά είναι μία πολύ ςημανσική λεισοτπγία ποτ ονομάζεσαι σαξινόμηςη (sorting) ή διάσαξη (ordering). Στνήθωρ η ςειπά ατσή είναι η αύξοτςα σάξη (ascending sequence) σηρ σιμήρ σων μεγεθών ππορ σαξινόμηςη.
Σκοπόρ σηρ σαξινόμηςηρ είναι να διετκολτνθεί ςση ςτνέφεια η αναζήσηςη σων ςσοιφείων σοτ σαξινομημένοτ πίνακα. Η φπηςιμόσησα σηρ σαξινόμηςηρ αποδεικνύεσαι ςσην ππάξη ςε αναπίθμησερ πεπιπσώςειρ αναζήσηςηρ απιθμησικών ή αλυαβησικών δεδομένων όποτ γίνεσαι αναζήσηςη αποθηκετμένων ανσικειμένων.
Οπιςμόρ σηρ σαξινόμηςηρ: Δοθένσων σων ςσοιφείων a1,a2,...,an η σαξινόμηςη ςτνίςσασαι ςση μεσάθεςη (permutation) σηρ θέςηρ σων ςσοιφείων, ώςσε να σοποθεσηθούν ςε μία ςειπά ak1, ak2,, akn έσςι ώςσε, δοθείςηρ μίαρ ςτνάπσηςηρ διάσαξηρ (ordering function), f, να ιςφύει: f(ak1)<f(ak2)<...<f(akn)
Η μέθοδορ σηρ σαξινόμηςηρ ετθείαρ ανσαλλαγήρ (straight exchange sort) βαςίζεσαι ςσην απφή σηρ ςύγκπιςηρ και ανσαλλαγήρ ζετγών γεισονικών ςσοιφείων, μέφπιρ όσοτ διασαφθούν όλα σα ςσοιφεία. Σύμυωνα με ση μέθοδο ατσή κάθε υοπά γίνονσαι διαδοφικέρ πποςπελάςειρ ςσον πίνακα και μεσακινείσαι σο μικπόσεπο κλειδί σηρ ακολοτθίαρ ππορ σο απιςσεπό άκπο σοτ πίνακα.
Αν ο πίνακαρ θεωπηθεί ςε κασακόπτυη θέςη ανσί ςε οπιζόνσια και οι ακέπαιοι θεωπηθούν - επιςσπασεύονσαρ απκεσή υανσαςία - ωρ υτςαλίδερ (bubbles) ςε μία δεξαμενή νεπού με βάπη ςύμυωνα με σην σιμή σοτρ, σόσε κάθε πποςπέλαςη ςσον πίνακα έφει ωρ αποσέλεςμα σην άνοδο σηρ υτςαλίδαρ ςσο κασάλληλο επίπεδο βάποτρ. Η μέθοδορ είναι γνωςσή ωρ σαξινόμηςη υτςαλίδαρ (bubblesort).
Παπάδειγμα: Έςσω όσι ο απφικόρ πίνακαρ αποσελείσαι από εννέα κλειδιά: 52, 12, 71, 56, 5, 10, 19, 90 και 45. Η μέθοδορ ευαπμοζόμενη ςε ατσά σα εννέα κλειδιά εξελίςςεσαι όπωρ υαίνεσαι ςσα επόμενα ςφήμασα:
Η σαξινόμηςη σηρ υτςαλίδαρ τλοποιείσαι με σον παπακάσω αλγόπιθμο: ΑΛΓΟΡΙΘΜΟ Φυζαλίδα ΓΔΓΟΜΔΝΑ // table, n // ΓΙΑ i ΑΠΟ 2 ΜΔΧΡΙ n ΓΙΑ j ΑΠΟ n ΜΔΧΡΙ i ΜΔ_ΒΗΜΑ -1 ΑΝ table[j-1] > table[j] ΣΟΣΔ ΑΝΣΙΜΔΣΑΘΔΔ table[j-1], table[j] ΣΔΛΟ_ΑΝ ΣΔΛΟ_ΔΠΑΝΑΛΗΨΗ ΣΔΛΟ_ΔΠΑΝΑΛΗΨΗ ΑΠΟΣΔΛΔΜΑΣΑ // table // ΣΔΛΟ Φυζαλίδα
Σσον αλγόπιθμο ατσό ωρ είςοδορ δίνεσαι η μεσαβλησή table με n ακεπαίοτρ ποτ ππέπει να σαξινομηθούν. H ενσολή "ανσιμεσάθεςε table[j-1], table[j]" ανσαλλάςςει σο πεπιεφόμενο δύο θέςεων με ση βοήθεια μίαρ βοηθησικήρ θέςηρ. Εναλλακσικά ατσό μποπεί να γίνει ωρ εξήρ: temp <- table[j-1] table[j-l] <- table [j] Table[j] < temp
Έναρ δεύσεπορ σπόπορ σαξινόμηςηρ είναι η μέθοδορ «Ταξινόμηςη με επιλογή» (Selection Sort). Βαςίζεσαι ςσην ςτγκπισική σαξινόμηςη. Θεωπείσαι απκεσά απλή μέθοδορ αλλά ςφεσικά απγή όσαν ευαπμόζεσαι ςε μεγάλερ λίςσερ.
Τα βήμασα ποτ ακολοτθούνσαι ςση μέθοδο ατσή: 1. Θεωπούμε όσι η 1 η θέςη σηρ λίςσαρ πεπιέφει σην μικπόσεπη σιμή. 2. Αναζησούμε διαδοφικά από ση 2 η έωρ και σην σελετσαία θέςη σηρ λίςσαρ εάν τπάπφει άλλη μικπόσεπη σιμή από ατσή σηρ 1 ηρ. Εάν τπάπφει σόσε ςημειώνοτμε ση θέςη σηρ.
Τα βήμασα ποτ ακολοτθούνσαι ςση μέθοδο ατσή: 3. Μεσά σο πέπαρ σηρ αναζήσηςηρ και ευόςον τπάπφει μικπόσεπη σιμή, ανσιμεσαθέσοτμε σην νέα ατσή σιμή με σην σιμή σηρ 1 ηρ θέςηρ. Η 1 η θέςη πεπιέφει σώπα σην μικπόσεπη σιμή σηρ λίςσαρ και θεωπείσαι όσι έφει ήδη σαξινομηθεί. 4. Επαναλαμβάνοτμε σα παπαπάνω βήμασα με σον ίδιο σπόπο για όλερ σιρ τπόλοιπερ θέςειρ πλην ατσών ποτ έφοτν ήδη σαξινομηθεί.
Παπάδειγμα: Έςσω όσι θέλοτμε να σαξινομήςοτμε σον ακόλοτθο πίνακα:
1 η υάςη:
2 η υάςη:
3 η υάςη:
4 η υάςη:
Αλγόριθμος Ταξινόμηζη_Με_Επιλογή Γεδομένα // Α, Ν // Για ι από 1 μέχρι Ν - 1 θέζη_ελαχ ι Για ξ από ι + 1 μέχρι Ν Αν Α[ξ] < Α[θέζη_ελαχ] ηόηε θέζη_ελαχ ξ Σέλος_αν Σέλος_επανάληψης Αν Α[θέζη_ελαχ] < Α[ι] ηόηε πποζωπινή Α[θέζη_ελαχ] Α[θέζη_ελαχ] Α[ι] Α[ι] πποζωπινή Σέλος_αν Σέλος_επανάληψης Αποηελέζμαηα // Α // Σέλος Ταξινόμηζη_Με_Επιλογή
3.7 Ταξινόμηςη (ςελίδα 65-67)