Οι ταξινομήσεις είναι εσωτερικές με χρήση άμεσης συμπερίληψης. Ταξινόμηση με άμεση συμπερίληψη

Ταξινόμηση κατά άμεση συμπερίληψη, όπως και ταξινόμηση κατά μέθοδο απλή επιλογή, συνήθως χρησιμοποιείται για πίνακες που δεν περιέχουν διπλότυπα στοιχεία.

Η ταξινόμηση με αυτή τη μέθοδο εκτελείται διαδοχικά βήμα προς βήμα. Επί κ-ο βήμα, θεωρείται ότι το τμήμα του πίνακα που περιέχει το πρώτο κ- 1 στοιχείο, έχει ήδη παραγγελθεί, π.χ.

Στη συνέχεια, πρέπει να πάρετε κ-ο στοιχείο και επιλέξτε μια θέση για αυτό στο ταξινομημένο τμήμα του πίνακα έτσι ώστε μετά την εισαγωγή του να μην παραβιάζεται η σειρά, δηλαδή να πρέπει να βρείτε τέτοια ώστε . Στη συνέχεια, πρέπει να εισαγάγετε ένα στοιχείο α(κ)στην τοποθεσία που βρέθηκε.

Με κάθε βήμα, το ταξινομημένο τμήμα του πίνακα αυξάνεται. Για να εκτελέσετε μια πλήρη ταξινόμηση, πρέπει να τρέξετε n- 1 βήμα.

Απομένει να απαντήσουμε στο ερώτημα πώς να αναζητήσετε ένα κατάλληλο μέρος για το στοιχείο Χ. Ας κάνουμε τα εξής: θα δούμε τα στοιχεία που βρίσκονται στα αριστερά Χ(δηλαδή αυτά που έχουν ήδη παραγγελθεί), προχωρώντας προς την αρχή του πίνακα. Τα στοιχεία πρέπει να προβληθούν α(ι), ιαλλάζει από κ- l έως 1. Αυτή η περιήγηση θα τερματιστεί όταν πληρούται μία από τις ακόλουθες προϋποθέσεις:

Βρέθηκε στοιχείο που υποδηλώνει την ανάγκη εισαγωγής Χανάμεσα και α(ι).

Το αριστερό άκρο του διατεταγμένου τμήματος του πίνακα έχει φτάσει, οπότε εισάγετε Χστην πρώτη θέση.

Μέχρι να εκπληρωθεί μία από αυτές τις προϋποθέσεις, θα μετατοπίσουμε τα στοιχεία που είδαμε κατά 1 θέση προς τα δεξιά, με αποτέλεσμα να ελευθερωθεί χώρος στο ταξινομημένο τμήμα κάτω από Χ.

Η τεχνική ταξινόμησης απεικονίζεται στον Πίνακα 2:

Πίνακας 2 - Παράδειγμα ταξινόμησης με χρήση άμεσης συμπερίληψης

Η αρχικά διατεταγμένη ακολουθία αποτελείται από το 1ο στοιχείο 9. Το στοιχείο ΕΝΑ( 2) Το =5 είναι το πρώτο της μη διατεταγμένης ακολουθίας και το 5< 9, поэтому ставится на его место, а 9 сдвигается вправо. Теперь упорядоченная последовательность состоит из двух элементов 5, 9. Элемент ΕΝΑ( 3) =15 της μη διατεταγμένης ακολουθίας είναι μεγαλύτερη από όλα τα στοιχεία της διατεταγμένης ακολουθίας, άρα παραμένει στη θέση της και στο επόμενο βήμα η διατεταγμένη ακολουθία αποτελείται από 5, 9, 15 και το εξεταζόμενο στοιχείο είναι 6. Η διαδικασία συνεχίζεται μέχρι η σειρά γίνεται διατεταγμένη.

παλινδρομική ταξινόμιση

Η μέθοδος φυσαλίδων επιτρέπει τρεις απλές βελτιώσεις. Πρώτον, εάν δεν έχει γίνει καμία ανταλλαγή σε κάποιο βήμα, τότε ο αλγόριθμος μπορεί να τερματιστεί. Δεύτερον, μπορείτε να θυμάστε τη μικρότερη τιμή του δείκτη πίνακα, για την οποία πραγματοποιήθηκαν μεταθέσεις στο τρέχον βήμα. Προφανώς, το πάνω μέρος του πίνακα μέχρι το στοιχείο με αυτό το ευρετήριο έχει ήδη ταξινομηθεί και στο επόμενο βήμα, μπορείτε να σταματήσετε να συγκρίνετε τις τιμές των γειτονικών στοιχείων όταν επιτευχθεί μια τέτοια τιμή ευρετηρίου. Τρίτον, η μέθοδος της φυσαλίδας λειτουργεί άνισα για "ελαφριές" και "βαριές" τιμές. Μια ελαφριά τιμή φτάνει στη σωστή θέση με ένα βήμα και μια βαριά κατεβαίνει προς τη σωστή θέση κατά μία θέση σε κάθε βήμα.

Η μέθοδος ShakerSort βασίζεται σε αυτές τις παρατηρήσεις. Όταν εφαρμόζεται, η κατεύθυνση της διαδοχικής περιήγησης αλλάζει σε κάθε επόμενο βήμα. Ως αποτέλεσμα, στο ένα βήμα το επόμενο ελαφρύτερο στοιχείο «επιπλέει» και στο επόμενο βήμα το επόμενο πιο βαρύ στοιχείο «βυθίζεται». Ένα παράδειγμα ταξινόμησης αναδευτήρα φαίνεται στον Πίνακα 3.

Πίνακας 3 - Ένα παράδειγμα τύπου αναδευτήρα

Ταξινόμηση πίνακα με χρήση εγκλεισμών με φθίνουσες αποστάσεις (μέθοδος Shell)

Ο D. Shell πρότεινε μια βελτίωση στη διαλογή χρησιμοποιώντας άμεση συμπερίληψη.

Η ιδέα της μεθόδου: όλα τα στοιχεία του πίνακα χωρίζονται σε ομάδες με τέτοιο τρόπο ώστε κάθε ομάδα περιλαμβάνει στοιχεία που απέχουν μεταξύ τους κατά έναν ορισμένο αριθμό θέσεων μεγάλο. Τα στοιχεία κάθε ομάδας είναι ταξινομημένα. Μετά από αυτό, όλα τα στοιχεία συνδυάζονται και πάλι και ταξινομούνται σε ομάδες, ενώ η απόσταση μεταξύ των στοιχείων μειώνεται. Η διαδικασία τελειώνει αφού πραγματοποιηθεί η σειρά των στοιχείων με απόσταση μεταξύ τους ίση με 1.

Ένα παράδειγμα ταξινόμησης με τη μέθοδο Shell φαίνεται στον Πίνακα 4.

Πίνακας 4 - Παράδειγμα ταξινόμησης με τη μέθοδο Shell

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

Διαίρεση ταξινόμησης (Γρήγορη ταξινόμηση)

Η μέθοδος ταξινόμησης διαμερισμάτων προτάθηκε από τον Charles Hoare. Αυτή η μέθοδος είναι μια εξέλιξη της μεθόδου απλής ανταλλαγής και είναι τόσο αποτελεσματική που έχει γίνει γνωστή ως μέθοδος γρήγορης ταξινόμησης - "Quicksort".

Η κύρια ιδέα του αλγορίθμου είναι αυτή τυχαίαεπιλέγεται κάποιο στοιχείο του πίνακα Χ, μετά από την οποία ο πίνακας σαρώνεται από τα αριστερά μέχρι να βρεθεί ένα στοιχείο Όλα συμπεριλαμβάνονται)τέτοια που Όλα συμπεριλαμβάνονται) > Χκαι στη συνέχεια γίνεται αναζήτηση του πίνακα από τα δεξιά μέχρι να βρεθεί ένα στοιχείο Όλα συμπεριλαμβάνονται)τέτοια που Όλα συμπεριλαμβάνονται)< Χ. Αυτά τα δύο στοιχεία ανταλλάσσονται και η διαδικασία προβολής, σύγκρισης και ανταλλαγής συνεχίζεται μέχρι να φτάσουμε στο στοιχείο Χ. Ως αποτέλεσμα, ο πίνακας θα χωριστεί σε δύο μέρη - το αριστερό, στο οποίο οι βασικές τιμές θα είναι μικρότερες από Χκαι το σωστό με βασικές τιμές μεγαλύτερες από Χ. Στη συνέχεια, η διαδικασία συνεχίζεται αναδρομικά για το αριστερό και το δεξί μέρος του πίνακα έως ότου κάθε τμήμα περιέχει ακριβώς ένα στοιχείο. Η αναδρομή μπορεί να αντικατασταθεί από επαναλήψεις εάν θυμάστε τους αντίστοιχους δείκτες πίνακα.

Η διαδικασία ταξινόμησης ενός πίνακα με τη γρήγορη μέθοδο παρουσιάζεται στον Πίνακα 5.

Πίνακας 5 - Παράδειγμα γρήγορης ταξινόμησης

Ταξινόμηση είναι η διάταξη των δεδομένων στη μνήμη με κανονικό τρόπο σύμφωνα με την επιλεγμένη παράμετρο. Η κανονικότητα θεωρείται ως αύξηση (μείωση) της τιμής της παραμέτρου από την αρχή έως το τέλος του πίνακα δεδομένων.

Κατά την επεξεργασία δεδομένων, είναι σημαντικό να γνωρίζετε το πεδίο πληροφοριών των δεδομένων και την τοποθέτησή τους στο μηχάνημα.

Διάκριση μεταξύ εσωτερικής και εξωτερικής ταξινόμησης:

Εσωτερική ταξινόμηση - ταξινόμηση μνήμη τυχαίας προσπέλασης;

Εξωτερική ταξινόμηση - ταξινόμηση σε εξωτερική μνήμη.

Εάν οι εγγραφές που πρόκειται να ταξινομηθούν καταλαμβάνουν μεγάλη ποσότητα μνήμης, η μετακίνησή τους είναι δαπανηρή. Για τη μείωσή τους, γίνεται ταξινόμηση σε πίνακας διευθύνσεων κλειδιού, δηλαδή, κάνουν μια μετάθεση δεικτών και ο ίδιος ο πίνακας δεν μετακινείται. Αυτό - μέθοδος ταξινόμησης πίνακα διευθύνσεων.

Κατά την ταξινόμηση, ενδέχεται να εμφανίζονται τα ίδια πλήκτρα. Σε αυτή την περίπτωση, είναι επιθυμητό μετά την ταξινόμηση να τακτοποιήσετε τα ίδια πλήκτρα με την ίδια σειρά όπως στο αρχείο προέλευσης. Αυτό - σταθερό είδος.

Θα εξετάσουμε μόνο είδη που δεν χρησιμοποιούν πρόσθετη μνήμη RAM. Τέτοια είδη λέγονται "στο ίδιο μέρος".

Η αποτελεσματικότητα της ταξινόμησης μπορεί να εξεταστεί σύμφωνα με διάφορα κριτήρια:

Χρόνος που αφιερώνεται στη διαλογή.

Η ποσότητα της μνήμης RAM που απαιτείται για την ταξινόμηση.

Ο χρόνος που αφιερώνει ο προγραμματιστής για να γράψει το πρόγραμμα.

Ξεχωρίζουμε το πρώτο κριτήριο. Μπορεί να ληφθεί υπόψη το ισοδύναμο του χρόνου που δαπανάται για τη διαλογή αριθμός συγκρίσεωνΚαι αριθμός κινήσεωνκατά την ταξινόμηση.

Η σειρά του αριθμού των συγκρίσεων και των κινήσεων κατά την ταξινόμηση βρίσκεται μέσα

Από το O (n log n) στο O (n 2);

Το O(n) είναι ιδανική και ανέφικτη περίπτωση.

Υπάρχουν οι ακόλουθες μέθοδοι ταξινόμησης:

Αυστηρές (άμεσες) μέθοδοι.

Βελτιωμένες μέθοδοι.

Αυστηρές μέθοδοι:

Μέθοδος άμεσης σύνδεσης.

Μέθοδος άμεσης επιλογής;

μέθοδος άμεσης ανταλλαγής.

Η αποτελεσματικότητα των αυστηρών μεθόδων είναι περίπου η ίδια.

Ταξινόμηση άμεσης συμπερίληψης

Τα στοιχεία χωρίζονται νοερά σε έτοιμη ακολουθία a 1 ,...,a i-1 και την αρχική ακολουθία.

Σε κάθε βήμα, ξεκινώντας από το i = 2 και αυξάνοντας το i κάθε φορά κατά ένα, εξάγεται από την αρχική ακολουθία i-ο στοιχείοκαι μετατοπίστηκε στην ολοκληρωμένη ακολουθία, ενώ εισάγεται στη σωστή θέση.

Η ουσία του αλγορίθμου είναι η εξής:

για i = 2 έως n

X = a(i)

Βρίσκουμε μια θέση μεταξύ ενός (1) ... a (i) για να συμπεριλάβουμε το x

επόμενο i


Υπάρχουν δύο αλγόριθμοι ταξινόμησης άμεσης συμπερίληψης. Πρώτον - κανένα εμπόδιο

Αλγόριθμος ταξινόμησης άμεσης συμπερίληψης χωρίς εμπόδια

για i = 2 έως n

X = a(i)

Για j = i - 1 κάτω σε 1

Αν x< a(j)

Τότε a(j + 1) = a(j)

Αλλιώς πηγαίνετε στο Λ

τέλος εαν

Επόμενο j

L: a(j + 1) = x

επόμενο i

ΕΠΙΣΤΡΟΦΗ

Το μειονέκτημα του παραπάνω αλγορίθμου είναι η παραβίαση της τεχνολογίας δομημένου προγραμματισμού, στην οποία είναι ανεπιθύμητη η χρήση άνευ όρων άλματα. Εάν ο εσωτερικός βρόχος είναι οργανωμένος ως ενώ βρόχος, τότε είναι απαραίτητο να ρυθμίσετε ένα "φράγμα", χωρίς το οποίο, με αρνητικές τιμές των κλειδιών, εμφανίζεται απώλεια σημασίας και "πάγωμα" του υπολογιστή.

Αλγόριθμος ταξινόμησης Barrier Direct Inclusion

για i = 2 έως n

X = a(i)

A(0) = x (a(0) - εμπόδιο)

J = i - 1

Ενώ x< a(j) do

A(j+1) = a(j)

J = j - 1

Endwhile

A(j+1) = x

επόμενο i

ΕΠΙΣΤΡΟΦΗ

Αποδοτικότητα του Αλγόριθμου Άμεσης Ένταξης

Ο αριθμός των βασικών συγκρίσεων Ci στην i-th screening είναι το πολύ i-1, τουλάχιστον - 1. Αν υποθέσουμε ότι όλες οι μεταθέσεις των N κλειδιών είναι εξίσου πιθανές, τότε ο μέσος αριθμός συγκρίσεων = i/2. Ο αριθμός των μεταφορών είναι Mi=Ci+3 (συμπεριλαμβανομένου του φραγμού). Οι ελάχιστες εκτιμήσεις εμφανίζονται στην περίπτωση μιας ήδη διατεταγμένης αρχικής ακολουθίας στοιχείων, ενώ οι χειρότερες εκτιμήσεις εμφανίζονται όταν είναι αρχικά διατεταγμένες με αντίστροφη σειρά. Κατά μία έννοια, η ταξινόμηση κατά συμπερίληψη παρουσιάζει πραγματικά φυσική συμπεριφορά. Είναι σαφές ότι ο παραπάνω αλγόριθμος περιγράφει τη σταθερή διαδικασία ταξινόμησης: η σειρά των στοιχείων με ίσα κλειδιά παραμένει αμετάβλητη.

Ο αριθμός των συγκρίσεων στη χειρότερη περίπτωση, όταν ο πίνακας ταξινομείται με τον αντίθετο τρόπο, C max = n (n - 1) / 2, δηλαδή - O (n 2). Ο αριθμός των μεταθέσεων M max = C max + 3(n-1), δηλ. - O (n 2). Εάν ο πίνακας είναι ήδη ταξινομημένος, τότε ο αριθμός των συγκρίσεων και των μεταθέσεων είναι ελάχιστος: C min = n-1; Mmin = =3(n-1).

Ταξινόμηση κατά άμεση ανταλλαγή (ταξινόμηση με φυσαλίδες)

Αυτή η ενότητα περιγράφει μια μέθοδο όπου η ανταλλαγή δύο στοιχείων είναι το πιο χαρακτηριστικό γνώρισμα της διαδικασίας. Ο αλγόριθμος άμεσης ανταλλαγής που περιγράφεται παρακάτω βασίζεται στη σύγκριση και την αλλαγή θέσεων για ένα ζεύγος γειτονικών στοιχείων και στη συνέχιση αυτής της διαδικασίας μέχρι να ταξινομηθούν όλα τα στοιχεία.

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

C min = n - 1, σειρά O(n),

και καθόλου κίνηση.

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

Αυτή η μέθοδος είναι κοινώς γνωστή ως "ταξινόμηση με φυσαλίδες".


Αλγόριθμος μεθόδου άμεσης ανταλλαγής

για j = n έως i βήμα -1

αν α(ι)< a(j - 1) then

Στην περίπτωσή μας, πήραμε ένα πέρασμα «αδρανές». Για να μην προβάλετε ξανά τα στοιχεία και επομένως για να κάνετε συγκρίσεις, αφιερώνοντας χρόνο σε αυτό, μπορείτε να εισαγάγετε το πλαίσιο ελέγχου fl, η οποία παραμένει στην αξία ψευδής, εάν κατά το επόμενο πέρασμα δεν γίνει ανταλλαγή. Στον παρακάτω αλγόριθμο, οι προσθήκες σημειώνονται με έντονους χαρακτήρες.

fl = αληθές

αν fl = false τότε επιστρέψτε

fl=ψεύτικο

για j = n έως i βήμα -1

αν α(ι)< a(j - 1) then

fl = αληθές

Μια βελτίωση στην ταξινόμηση με φυσαλίδες είναι η ταξινόμηση με αναδευτήρα, όπου μετά από κάθε πέρασμα η κατεύθυνση αντιστρέφεται σε έναν εσωτερικό βρόχο.

Αποδοτικότητα του αλγόριθμου ταξινόμησης απευθείας ανταλλαγής

Αριθμός συγκρίσεων C max = n(n-1)/2, τάξη O(n 2).

Ο αριθμός των κινήσεων M max \u003d 3C max \u003d 3n (n-1) / 2, η τάξη του O (n 2).

Εάν ο πίνακας είναι ήδη ταξινομημένος και εφαρμόζεται ο αλγόριθμος σημαίας, τότε αρκεί μόνο ένα πέρασμα και, στη συνέχεια, παίρνουμε τον ελάχιστο αριθμό συγκρίσεων

Απαραίτητοι ορισμοί και ταξινόμηση των ειδών.

Ταξινόμηση. Απαραίτητοι ορισμοί και ταξινόμηση των ειδών. Άμεση ένταξη και επιλογή. Η αποτελεσματικότητά τους

Ταξινόμησηείναι η διάταξη των δεδομένων στη μνήμη σε κανονική μορφή από τα κλειδιά τους. Επομένως, κατά την επεξεργασία δεδομένων, είναι σημαντικό να γνωρίζετε το πεδίο πληροφοριών των δεδομένων και την τοποθέτησή τους στο μηχάνημα. Ως εκ τούτου, διακρίνονται εσωτερικός(ταξινόμηση σε RAM) και εξωτερική ταξινόμηση(ταξινόμηση σε εξωτερική μνήμη). Κανονικότηταη διάταξη των στοιχείων είναι η αύξηση (μείωση) της τιμής του κλειδιού από την αρχή μέχρι το τέλος του πίνακα.

Εάν οι εγγραφές που πρόκειται να ταξινομηθούν καταλαμβάνουν μεγάλη ποσότητα μνήμης, η μετακίνησή τους είναι δαπανηρή. Για να τα μειώσετε, χρησιμοποιήστε μέθοδος ταξινόμησης πίνακα διευθύνσεων. Αυτή η μέθοδος χρησιμοποιείται σε πίνακας διευθύνσεων κλειδιού. Πραγματοποιείται μετάθεση δεικτών, δηλ. Ο ίδιος ο πίνακας δεν μετακινείται. Κατά την ταξινόμηση, ενδέχεται επίσης να εμφανίζονται τα ίδια πλήκτρα. Σε αυτήν την περίπτωση, είναι επιθυμητό να τακτοποιήσετε τα ίδια πλήκτρα μετά την ταξινόμηση με την ίδια σειρά όπως στο αρχείο προέλευσης. Αυτή η αρχή χρησιμοποιείται για βιώσιμη διαλογή.

Η αποτελεσματικότητα της ταξινόμησης μπορεί να ληφθεί υπόψη από διάφορα κριτήρια:

1) χρόνος που αφιερώνεται στη διαλογή·

2) την ποσότητα της μνήμης RAM που απαιτείται για την ταξινόμηση.

3) ο χρόνος που αφιερώνει ο προγραμματιστής για να γράψει το πρόγραμμα.

Ο χρόνος που αφιερώνεται στην ταξινόμηση είναι ανάλογος με τον αριθμό των συγκρίσεων στην ταξινόμηση και τον αριθμό των μετακινήσεων του στοιχείου.

Πιστεύεται ότι η σειρά του αριθμού σύγκρισης κατά τη διαλογή μπορεί να είναι στην περιοχή από o(nlogn)πριν o(n 2), Οπου επί)- ιδανική και ανέφικτη περίπτωση.

Οι μέθοδοι ταξινόμησης μπορούν να ταξινομηθούν κάπως έτσι:

1) αυστηρές (άμεσες) μέθοδοι(η αποτελεσματικότητά τους είναι περίπου η ίδια):

· απευθείας σύνδεση;

· άμεση επιλογή;

· άμεση ανταλλαγή;

2) Βελτιωμένες μεθόδους.

Στη ζωή, η αρχή αυτής της ταξινόμησης είναι παρούσα όταν παίζετε παιχνίδια πασιέντζας, καθαρίζετε ένα διαμέρισμα, όταν είναι απαραίτητο να τακτοποιήσετε ένα σωρό ανάμεικτα πράγματα με τη σωστή σειρά κ.λπ. Ένας πολύ φυσικός τρόπος ταξινόμησης έχει εφαρμοστεί και στην παραγγελία δεδομένων.

Τα στοιχεία χωρίζονται διανοητικά σε μια έτοιμη ακολουθία a 1 ,...,a i-1και πρωτότυπη σειρά. Στην ολοκληρωμένη ακολουθία, τα στοιχεία είναι διατεταγμένα σε μια δεδομένη σειρά (σε φθίνουσα ή αύξουσα σειρά). Και στην αρχική σειρά υπάρχουν στοιχεία που πρέπει να ταξινομηθούν. Σε κάθε βήμα, τα στοιχεία της αρχικής ακολουθίας μειώνονται κατά ένα και η τελική ακολουθία αυξάνεται κατά ένα. Αυτό οφείλεται στο γεγονός ότι εξάγεται από την αρχική ακολουθία Εγώ-ου στοιχείου και μεταφέρεται στην ολοκληρωμένη ακολουθία, ενώ εισάγεται στη σωστή θέση ανάμεσα στα στοιχεία της τελικής ακολουθίας.

Εξετάστε ένα παράδειγμα ταξινόμησης άμεσης συμπερίληψης στην ακολουθία στοιχείων: 10, 3, 11, 8, 2, 15, 44, 9 (Πίνακας 11.1). Πρέπει να ταξινομηθεί με αύξουσα σειρά.

Πρώτον, η ολοκληρωμένη ακολουθία δεν έχει στοιχεία. Στο πρώτο βήμα, το πρώτο στοιχείο της αρχικής ακολουθίας, το 10, γίνεται το πρώτο στοιχείο της ολοκληρωμένης ακολουθίας. Στη συνέχεια, το δεύτερο βήμα: το στοιχείο 3 από την αρχική ακολουθία τοποθετείται στην τελική. Συμβαίνει έτσι. Αν το στοιχείο είναι μεγαλύτερο από 10, τότε παραμένει στη θέση του και αν είναι μικρότερο, τότε το 10 μετατοπίζεται κατά ένα προς τα δεξιά και στη θέση του τοποθετείται ένα στοιχείο. Από 3<10, то готовая последовательность теперь будет иметь вид: 3, 10, а исходная – 11, 8, 2, 15, 44, 9. Далее на третьем шаге из исходной последовательности выбирается 11 и помещается в готовую последовательность. Сначала 11 сравнивается с 10, и так как 11>10, τότε το 11 παραμένει στη θέση του. Η αρχική ακολουθία είναι τώρα: 8, 2, 15, 44, 9. Τα επόμενα βήματα γίνονται με τον ίδιο τρόπο.

Πίνακας 11.1

Πώς λειτουργεί η άμεση ταξινόμηση

Ο αριθμός των βημάτων σε αυτήν την ταξινόμηση (Πίνακας 11.1) είναι ίσος με τον αριθμό των στοιχείων της ταξινομημένης ακολουθίας, δηλ. 8 βήματα = 8 στοιχεία.

Υπάρχουν δύο τρόποι υλοποίησης αυτή τη μέθοδο- αυτό είναι χωρίς φράγμα (Εικ. 11.1) και με φράγμα (Εικ. 11.2).

Η μέθοδος άμεσης συμπερίληψης μπορεί να βελτιωθεί βρίσκοντας μια θέση για την εισαγόμενη εγγραφή σε έναν ταξινομημένο υποπίνακα χρησιμοποιώντας τη μέθοδο δυάδικος (διχοτόμος, δυαδικός, λογαριθμικός)Αναζήτηση. Αυτή η τροποποίηση της μεθόδου εισαγωγής ονομάζεται ένθετο με δυαδική συμπερίληψη.

Σκεφτείτε ι‑ο βήμα ταξινόμησης ( ι=2, 3, ..., n). Αν κ[ ι]>= κ[ ι-1] , τότε η παραγγελία δεν παραβιάζεται και θα πρέπει να πάμε στο R[ ι+1]– ω δίσκοι. Αν κ[ ι]< κ[ ι-1] , Οτι R[ ι] αποθηκευμένο στη μεταβλητή εργασίας (Rab= R[ ι]) και για αυτό αναζητείται μια θέση στο διατεταγμένο μέρος του πίνακα - στον υποπίνακα. Ας υποδηλώσουμε το κάτω όριο του δείκτη αυτού του υποπίνακα ως ng, από πάνω vg (αρχικά ng=1. vg=j-1).

Σύμφωνα με τη δυαδική αναζήτηση το κλειδί κ[ ι] το επίμαχο ρεκόρ R[ ι] πρέπει πρώτα να συγκριθεί με το κλειδί κ[ Εγώ] εγγραφές R[ Εγώ] , που βρίσκεται στη μέση του διατεταγμένου υποπίνακα (i=(ng+vg) div 2). Αν κ[ ι]> κ[ Εγώ], στη συνέχεια απορρίπτεται (δηλαδή, δεν θεωρείται πλέον) η αριστερή πλευρά του υποπίνακα - εγγραφές με μικρότερα πλήκτρα (ng= Εγώ+1) . Αν κ[ ι]< κ[ Εγώ] , τότε η δεξιά πλευρά του υποπίνακα απορρίπτεται - εγγραφές με μεγάλα πλήκτρα (vg= Εγώ-1). Η αναζήτηση συνεχίζεται στον υπόλοιπο υποπίνακα. Η διαδικασία διαίρεσης τμημάτων ενός υποπίνακα στη μέση συνεχίζεται μέχρι να συμβεί μία από τις ακόλουθες καταστάσεις:

1) κ[ ι]= κ[ Εγώ] , ως εκ τούτου, (i+1)Η -η θέση είναι η θέση για την εν λόγω καταχώρηση. Ας μετακινήσουμε τα αρχεία R[ Εγώ+1], R[ Εγώ+2], …, R[ ι-1] μία θέση προς τα δεξιά και έτσι ελευθερώστε χώρο για εισαγωγή (R[ Εγώ+1]= Rab).

2) κ[ ι]<> κ[ Εγώ] Και ng> vg – τα κλειδιά δεν ταιριάζουν και το μήκος του τελευταίου υποπίνακα είναι 1. Σε αυτήν την περίπτωση, το σημείο εισαγωγής είναι η θέση ng, ρεκόρ λοιπόν R[ ng], R[ ng+1], … , R[ ι-1] πρέπει να μετακινηθεί μια θέση προς τα δεξιά (R[ ng]= Rab) .

Ο αλγόριθμος δυαδικής αναζήτησης περιγράφεται αναλυτικά στην ενότητα «Αναζήτηση διχοτομικής σύμπτωσης».

Ας δούμε ένα παράδειγμα ι-ο βήμα ταξινόμησης (προσδιορίζεται η θέση της εγγραφής με το κλειδί ίσο με 9. ι=7, κ[ ι]=9 ):

Ο μέσος αριθμός συγκρίσεων για αυτή τη μέθοδο είναι nlog 2 (n).

Μέθοδος εισαγωγής διπλής διαδρομής

Μέθοδος εισαγωγής διπλής διαδρομήςείναι μια τροποποίηση της μεθόδου άμεσης εισαγωγής. βελτιώνει την απόδοση ταξινόμησης.

Για την εφαρμογή αυτής της μεθόδου, απαιτείται επιπλέον ποσότητα μνήμης, ίση με την ποσότητα που καταλαμβάνει ο πίνακας που πρόκειται να ταξινομηθεί (ας το ονομάσουμε ζώνη εξόδου Τ). Στο πρώτο βήμα ταξινόμησης στο μέσο της περιοχής εξόδου (θέση m=(ndiv 2)+1) τοποθετείται η πρώτη εγγραφή του πίνακα R.Άλλες θέσεις Τενώ είναι άδειο. Στα επόμενα βήματα ταξινόμησης, το κλειδί της επόμενης εγγραφής R[ ι] (ι=2, 3, …, n) συγκρίνεται με το κλειδί εγγραφής Τ[ Μ] και, ανάλογα με τα αποτελέσματα της σύγκρισης, μια θέση για R[ ι] βρέθηκε στο Ταριστερά ή δεξιά του Τ[ Μ] μέθοδος εισαγωγής. Σε αυτήν την περίπτωση, οι αριθμοί του πιο αριστερού ( μεγάλο) και το πιο σωστό ( r) των στοιχείων που εισάγονται στη ζώνη εξόδου. Τελικές τιμές μεγάλοΚαι rίσος 1 Και nαντίστοιχα.

Οι ακόλουθες καταστάσεις πρέπει επίσης να λαμβάνονται υπόψη στον αλγόριθμο:

    κλειδί εγγραφής R[j]λιγότερο από το κλειδί εγγραφής T[m], Αλλά l=1;

    κλειδί εγγραφής R[j]περισσότερο κλειδί εγγραφής T[m], Αλλά r=n.

Σε αυτές τις περιπτώσεις, για να εισαγάγετε μια εγγραφή R[ ι] είναι απαραίτητο να μετατοπίσετε τις εγγραφές του υποπίνακα μαζί με την εγγραφή Τ[ Μ] δεξιά ή αριστερά (με τη μέθοδο άμεσης εισαγωγής).

Ας δούμε ένα παράδειγμα ταξινόμησης χρησιμοποιώντας αυτή τη μέθοδο.

Αφήστε την αρχική ακολουθία των πλήκτρων πίνακα να μοιάζει με:

24, 1, 28, 7, 25, 3, 6, 18, 8 (n=9, Μ=(n div 2)+ 1=5)

Αριθμός βήματος

Ζώνη εξόδου



Φόρτωση...
Μπλουζα