Ένα είδος συγχώνευσης είναι ένα «διαίρει και βασίλευε » αλγόριθμο , υπό την έννοια ότι παίρνει τμήματα των καταλόγων και συνεχώς σπάνε στη μέση μέχρι να φτάσει μεμονωμένα στοιχεία του καταλόγου , τα οποία στη συνέχεια συγχωνεύθηκαν σε παραγγελία. Για παράδειγμα , αρχίζουν με ένα αριθμητικό κατάλογο , όπως
5 6 2 4 1 9 8 3 7
Ταξινόμηση έναν κατάλογο , όπως αυτό με ένα είδος συγχώνευσης θα απαιτήσει μείωση κατά το ήμισυ το μέγεθος της λίστας επανειλημμένα έως ότου κάθε βασικός αριθμός υπάρχει από μόνη της . Στη συνέχεια , το είδος μπορεί να συγκρίνει τους αριθμούς και τα βάζουμε μαζί με τη σωστή σειρά ( χαμηλότερη στην υψηλότερη , σε αυτή την περίπτωση ) .
Εικόνων Η μέθοδος συγχώνευσης
Η
Η μέθοδος συγχώνευσης είναι απλή :
def συγχώνευση ( πρώτη, δεύτερη )
Λαμβάνοντας δύο λίστες , η μέθοδος θα τους συγχωνεύονται , ξεκινώντας στην αρχή της κάθε λίστας . Στη συνέχεια προσθέτει το επόμενο ελάχιστο ποσό της κάθε λίστας σε μια νέα λίστα . Το αποτέλεσμα είναι μια ταξινομημένη λίστα . ( Θυμηθείτε να εισάγετε σωστά καρτέλα άσπρο διάστημα μετά τις "ενώ" και " if /else " δηλώσεις . ) :
Ενώ i < len (πρώτη ) και ι < len (δεύτερη ) :
< p > αν η πρώτη [ i ] < = δεύτερη [ ι ] :
new_list.append ( πρώτα [ i ] )
i = i + 1
άλλο : < br >
new_list.append (δεύτερη [ j ] )
j = j + 1 }
Τέλος , μετά το τέλος ενός πίνακα , οι υπόλοιπες τιμές τοποθετούνται στο νέο κατάλογο : < br >
new_list + = πρώτα [ i : ] Ξενοδοχεία
new_list + = δεύτερη [ j : ] Ξενοδοχεία
επιστρέψει end_list
Η Merge Sort Προϋποθέσεις
Η
Η πραγματική συγχώνευση οδηγεί είδος το κύριο αλγόριθμο ταξινόμησης . Υπάρχουν δύο κύρια λειτουργικά μέρη : η υπό όρους πτυχή που σταματά την αναδρομή από τη στιγμή που οι κατάλογοι υποδιαιρούνται και την πραγματική αναδρομή που μισά τους καταλόγους . Η κατάσταση σταματήσει έρχεται πρώτο :
def με συγχώνευση ( λίστα) :
αν len ( λίστα) == 1 :
επιστρέψει κατάλογο
Αυτό εξασφαλίζει ότι όταν μια υπο λίστα φτάνει μόνο ένα στοιχείο , το στοιχείο αυτό επιστρέφεται προκειμένου να συγχωνευθεί με τους άλλους αριθμούς .
εικόνων Merge Sort Αναδρομή
Η
Το δεύτερο μισό του το είδος είναι η αναδρομή . Μετά το " if" /υπό όρους , ως εξής :
άλλο :
μέση = len ( λίστα) /2
start = ταξινόμησης με συγχώνευση ( λίστα [ μέση : ] )
τέλος = ταξινόμησης με συγχώνευση ( list [ : middle ] )
συγχώνευση επιστροφής ( έναρξη, λήξη )
Λόγω της αναδρομής , αφού οι κατάλογοι σπάσει σε επιμέρους στοιχεία , ο αλγόριθμος πίσω κομμάτια μέχρι την τελευταία εκτελέστηκε μέθοδο . Έτσι , από τη στιγμή που η δήλωση « συγχώνευση επιστροφής ( έναρξη, λήξη ) " εκτελεί , ο αλγόριθμος επιστρέφει ένα συγχωνεύονται , τον κατάλογο των δύο συγχωνευμένων , ταξινομημένες λίστες μικρότερου μεγέθους ταξινόμηση .
Η < br >
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα