Lijsten sorteren van gegevens is een probleem dat is gekweld programmeurs sinds het begin van de computer programmeren . Sortering elke lijst van gegevens kan eindigen als een geheugen - en tijdrovende taak . Hierdoor hebben ander soort methoden bedacht om de uitdaging en moeite sortering minimaliseren . Een methode is fuseren sorteren . Zij verdeelt een lijst recursief in enkelvoud elementen en hercombineert de lijst in gesorteerde vorm . Elke programmeertaal die recursie ondersteunt , zoals Python , kan een merge sort uitvoeren . Wat je nodig hebt Python Interpreter met Interactive Development Environment Toon Meer Aanwijzingen 1 Definieer de functie " mergesort " . Deze fundamentele functie noemt zichzelf recursief , het splitsen van de lijst grootte in de helft met elke oproep . Zodra de mergesort functie slaat een lijst met een element , stopt de recursie en het element terug . Zoals de mergesort recursie afwikkelt , wordt elke kleinere lijst samengevoegd in gesorteerde volgorde . Dit voorbeeld toont een fundamentele mergesort functie die een lijst als argument neemt : >>> def mergesort ( li ) : . . . If Len ( li ) < 2 : . . . terug li . . . mid = len ( li ) /2 . . . eerste = mergesort ( li [ : mid ] ) op Twitter . . . laatste = mergesort ( li [ mid : ] ) op Twitter . . . terug samenvoegen ( eerste, laatste ) kopen van 2 Stel de merge -methode . Deze functie zal dienen als de sorteer methode , maar een gesorteerde lijst van elementen terug . Het samenvoegen methode heeft twee al - gesorteerde lijsten . Het definieert vervolgens een interne lijst ' gesorteerd ' dat de gecombineerde naargelang argument lijsten zal vertegenwoordigen . Het samenvoegen methode doet dit door het nemen van de kleinste element en deze in een nieuwe lijst " gesorteerd " . Zodra een van de lijsten uiteinden , de andere lijst is geplaatst in zijn geheel >>> def merge ( x , y ) : . . . . naargelang = [ ] 3 samenvoegen van de lijsten in de merge -methode . De lus "terwijl" in het voorbeeld vergelijkt elke lijst punt voor punt , waarbij het kleinste element en deze in een nieuwe lijst " gesorteerd " . Zodra een van de lijsten eindigt , wordt de andere lijst in zijn geheel , en de nieuwe gesorteerde lijst wordt geretourneerd : . . . i , j = 0 , 0 . . . terwijl i < len ( x ) en j < len ( y ) : . . . als x [ i ] < = y [ j ] : . . . sorted.append ( x [ i ] ) op Twitter . . . i + 1 = . . . anders : . . . sorted.append ( y [ j ] ) op Twitter . . . j + 1 = . . . naargelang + = x [ I : ] . . . naargelang + = y [ : j ] . . . terug naargelang
|