Sortering datalistor är ett problem som har förargat programmerare sedan början av datorprogrammering . Sortering någon lista med data kan sluta som ett minne - och tidskrävande uppgift . På grund av detta har olika slags metoder uppfunnits för att minimera utmaning och ansträngning för sortering . En metod är samman sortering . Den delar upp en lista rekursivt in singulära element och återförenar listan i sorterade formen . Alla programmeringsspråk som stöder rekursion , såsom Python , kan genomföra en sammanslagning sort . Saker du behöver
Pythontolk med Interactive Development Environment
Visa fler instruktioner
1
Definiera " mergesort " funktionen . Denna grundläggande funktion kallar sig rekursivt , dela listan storlek i hälften med varje samtal . När mergesort funktionen slår en lista med ett element , stannar rekursion och avkastningen elementet . Som mergesort rekursion rullas , är varje mindre lista slås ihop i sorterad ordning . Detta exempel visar en grundläggande mergesort funktion som tar en lista som argument :
>>> def mergesort ( li ) :
. . . If Len ( li ) < 2 :
. . . återvända li
. . . mid = len ( li ) /2 Review
. . . första = mergesort ( li [ : mitten ] ) katalog
. . . Senast = mergesort ( li [ mid : ] ) katalog
. . . returnera samman ( första , sista )
2
Konfigurera merge metoden . Denna funktion kommer att fungera som sorteringsmetod , den returnerar en sorterad lista av element . Den samman- metoden tar två redan sorterade listor . Det definierar därefter en intern lista " sorteras " som kommer att representera de kombinerade sorterade argumentlistor . Den samman- metoden åstadkommer detta genom att ta det minsta elementet och sätter in det i en ny lista " sorteras " . När en av de listor ändar , är den andra listan införd i sin helhet
>>> def merge ( x , y ) : .
. . . sorteras = [ ]
3
Merge listorna i kopplingen metoden . Den " medan " loop i exemplet jämförs varje lista punkt för punkt , med den minsta del och sätter in det i en ny lista " sorteras " . När en av listorna slutar , är den andra listan införd i sin helhet , och den nya sorterade listan returneras :
. . . i, j = 0 , 0
. . . medan jag < len ( x ) och j < len ( y ) :
. . . Om x [ i] < = y [ j ] :
. . . sorted.append ( x [ i] ) katalog
. . . i + = 1
. . . annanstans :
. . . sorted.append ( y [ j ] ) katalog
. . . j + = 1
. . . sorterade + = x [ I : ]
. . . sorterade + = y [ : j ]
. . . tillbaka sorteras Addera