1 Ορίστε τη λειτουργία " με συγχώνευση » . Αυτή η βασική λειτουργία αυτοαποκαλείται αναδρομικά , διαχωρίζοντας το μέγεθος της λίστας στο μισό με κάθε κλήση . Μόλις η λειτουργία ταξινόμησης με συγχώνευση χτυπά μια λίστα με ένα στοιχείο , η αναδρομή σταματά και οι αποδόσεις στοιχείο. Καθώς η αναδρομή με συγχώνευση ξετυλίγεται , κάθε μικρότερο λίστα συγχωνεύονται σε ταξινομημένη σειρά . Αυτό το παράδειγμα εμφανίζει μια βασική λειτουργία με συγχώνευση που παίρνει μια λίστα ως επιχείρημα :
>>> def με συγχώνευση ( li ) :
. . . αν len ( li ) <2 :
. . . επιστροφή li
. . . mid = len ( li ) /2
. . . Πρώτα = ταξινόμησης με συγχώνευση ( li [ : mid ] )
. . . = τελευταία με συγχώνευση ( li [mid : ] )
. . . συγχώνευση επιστρέψει ( πρώτη , τελευταία) 2
Ρυθμίστε τη μέθοδο της συγχώνευσης . Η λειτουργία αυτή θα χρησιμεύσει ως μέθοδος διαλογής ? Επιστρέφει μια ταξινομημένη λίστα των στοιχείων . Η μέθοδος συγχώνευσης παίρνει δύο ήδη ταξινομημένο καταλόγους . Στη συνέχεια, ορίζει μία εσωτερική λίστα " ταξινόμηση " που θα εκπροσωπήσει τις συνδυασμένες ταξινομημένες λίστες επιχείρημα . Η μέθοδος συγχώνευσης επιτυγχάνει αυτό με τη λήψη το μικρότερο στοιχείο και την εισαγωγή σε μια νέα λίστα " ταξινόμηση " . Μόλις μία από τις λίστες τελειώνει , η άλλη λίστα εισάγεται στο σύνολό της
>>> def συγχώνευση ( x , y ) : .
. . . ταξινομούνται = [ ]
εικόνων 3
Συγχώνευση των καταλόγων με τη μέθοδο της συγχώνευσης . Ο βρόχος "while" στο παράδειγμα συγκρίνει κάθε στοιχείο από το σημείο , αφού το μικρότερο στοιχείο και την τοποθετήσετε σε μια νέα λίστα " ταξινόμηση " . Μόλις μία από τις λίστες τελειώνει , η άλλη λίστα εισάγεται στο σύνολό της , και η νέα ταξινομημένη λίστα επιστρέφεται :
. . . i , j = 0 , 0
. . . ενώ εγώ . . . αν x [ i ] <= y [ j ] : . . . sorted.append ( x [ i ] ) . . . i + = 1 . . . άλλο : . . . sorted.append ( y [ j ] ) . . . j = 1 + . . . ταξινόμηση + = x [ I: ] Ξενοδοχεία . . . ταξινόμηση + = y [ : j ] Ξενοδοχεία . . . επιστρέψει ταξινόμηση
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα