Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Python Προγραμματισμός

Αναδρομική Συγχώνευση Ταξινόμηση σε Python

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

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

5 6 2 4 1 9 8 3 7

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

Η μέθοδος συγχώνευσης είναι απλή :

def συγχώνευση ( πρώτη, δεύτερη )

Λαμβάνοντας δύο λίστες , η μέθοδος θα τους συγχωνεύονται , ξεκινώντας στην αρχή της κάθε λίστας . Στη συνέχεια προσθέτει το επόμενο ελάχιστο ποσό της κάθε λίστας σε μια νέα λίστα . Το αποτέλεσμα είναι μια ταξινομημένη λίστα . ( Θυμηθείτε να εισάγετε σωστά καρτέλα άσπρο διάστημα μετά τις "ενώ" και " if /else " δηλώσεις . ) :

Ενώ i

αν η πρώτη [ i ] <= δεύτερη [ ι ] :

new_list.append ( πρώτα [ i ] )

i = i + 1

άλλο :

new_list.append (δεύτερη [ j ] )

j = j + 1 }

Τέλος , μετά το τέλος ενός πίνακα , οι υπόλοιπες τιμές τοποθετούνται στο νέο κατάλογο :

new_list + = πρώτα [ i : ] Ξενοδοχεία

new_list + = δεύτερη [ j : ] Ξενοδοχεία

επιστρέψει end_list

Η Merge Sort Προϋποθέσεις
Η

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

def με συγχώνευση ( λίστα) :

αν len ( λίστα) == 1 :

επιστρέψει κατάλογο

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

Το δεύτερο μισό του το είδος είναι η αναδρομή . Μετά το " if" /υπό όρους , ως εξής :

άλλο :

μέση = len ( λίστα) /2

start = ταξινόμησης με συγχώνευση ( λίστα [ μέση : ] )

τέλος = ταξινόμησης με συγχώνευση ( list [ : middle ] )

συγχώνευση επιστροφής ( έναρξη, λήξη )

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

Η

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα