Sortering lister av data er et problem som har plaget programmerere siden begynnelsen av dataprogrammering . Sortering noen liste over data kan ende opp som et minne - og tidkrevende oppgave. På grunn av dette , har ulike sorter metoder blitt oppfunnet for å minimere utfordringen og krefter på sortering. En metode er fusjonere sortering. Det deles en liste rekursivt inn i entall elementer og recombines listen i sortert skjemaet. Alle programmeringsspråk som støtter rekursjon , som Python , kan gjennomføre en sammenslåing slag. Du trenger
Python tolk med Interactive Development Environment
Vis flere instruksjoner
en
Definer " mergesort "-funksjonen . Denne grunnleggende funksjonen kaller seg rekursivt , splitte listelengde i to med hver samtale. Når mergesort funksjon treffer en liste med ett element , stopper rekursjon og elementet avkastning. Som mergesort rekursjon avtar , er hver mindre liste flettet sammen i sortert rekkefølge . Dette eksemplet viser en enkel mergesort funksjon som tar en liste som argument : en
>>> def mergesort ( li) : en
. . . Hvis len ( li) < 2 : en
. . . returnere li
. . . mid = len ( li) /2
. . . første = mergesort ( li [ : midten ] )
. . . siste = mergesort ( li [ mid : ] )
. . . tilbake fusjonere ( fornavn, etternavn )
2
Sett opp flettingen metoden. Denne funksjonen vil fungere som sortering metoden, den returnerer en sortert liste over elementer . Flettingen metoden tar to allerede sorterte lister . Den definerer deretter en intern liste "sortert " som skal representere den kombinerte sortert argument lister. Flettingen metoden oppnår dette ved å ta det minste elementet og sette det inn i en ny liste "sortert " . Når en av listene er ferdig, blir den andre listen satt inn i sin helhet
>>> def merge ( x , y ) : .
. . . sortert = [ ]
3
Merge listene i flettingen metoden. Den "mens " loop i eksempelet sammenligner hver liste element av element , tar det minste elementet og sette det inn i en ny liste "sortert " . Når en av listene slutter , er den andre listen satt inn i sin helhet , og den nye sorterte listen blir returnert:
. . . i, j = 0 , 0
. . . mens i < len ( x ) og j < len ( y) : en
. . . hvis x [ i] < = y [ j ] : en
. . . sorted.append ( x [ i] )
. . . i + = 1
. . . annet : en
. . . sorted.append ( y [ j ] )
. . . j + = 1
. . . sorteres + = x [ I: ]
. . . sorteres + = y [ : j ]
. . . returnere sortert