Sortieren von Listen von Daten ist ein Problem, das Programmierer geärgert hat sich seit Beginn der Computer-Programmierung . Sortierung keine Liste von Daten kann am Ende als Erinnerung - und zeitintensive Aufgabe. Aus diesem Grund wurden verschiedene Art Methoden erfunden worden, um die Herausforderung und Mühe des Sortierens zu minimieren. Eine Methode ist, verschmelzen Sortierung. Sie unterteilt eine Liste rekursiv in singulären Elemente und rekombiniert die Liste in sortierter Form . Jede Programmiersprache, die Rekursion unterstützt , wie Python, umsetzen können einen Merge sort . Things You
Python Interpreter mit Interactive Development Environment
brauchen anzeigen Weitere Anweisungen
1
Definieren Sie den " mergesort "-Funktion . Diese grundlegende Funktion ruft sich selbst rekursiv , Spaltung der Liste Größe in der Hälfte mit jedem Anruf . Sobald die Funktion mergesort trifft eine Liste mit einem Element , stoppt die Rekursion und die Element- Renditen. Da die mergesort Rekursion abwickelt , wird jeder kleinere Liste zusammen in sortierter Reihenfolge zusammengeführt . Dieses Beispiel zeigt eine grundlegende mergesort Funktion, die eine Liste als Argument :
>>> def mergesort ( li ):
. . . if len ( li ) < 2:
. . . Rückkehr li
. . . mid = len ( li ) /2
. . . first = mergesort ( li [: Mitte ] )
. . . last = mergesort ( li [ Mitte : ] )
. . . zurück zu verschmelzen ( first, last)
2
die Merge-Methode setzen . Diese Funktion wird als Sortierverfahren dienen , es gibt eine sortierte Liste von Elementen . Die Merge-Methode nimmt zwei bereits sortierten Listen . Es definiert dann eine interne Liste "sortiert" , dass die kombinierte sortiert Argument Listen vertreten wird . Die Merge-Methode erreicht dies , indem man das kleinste Element und Einfügen in einer neuen Liste "sortiert" . Sobald einer der Listen endet, wird die andere Liste in ihrer Gesamtheit eingefügt
>>> def merge (x, y) : .
. . . sortiert = []
3
Zusammenführen der Listen in der Merge-Methode . Die " while"-Schleife im Beispiel vergleicht jede Liste Punkt für Punkt , wobei das kleinste Element und Einfügen in einer neuen Liste "sortiert" . Sobald einer der Listen endet, wird die andere Liste in ihrer Gesamtheit eingefügt , und die neue sortierten Liste wird zurückgegeben:
. . . i, j = 0, 0
. . . während i < len ( x ) und j < len ( y ):
. . . wenn x [i] <= y [j] :
. . . sorted.append ( x [i])
. . . i + = 1
. . . sonst :
. . . sorted.append (y [j])
. . . j + = 1
. . . sortiert + = x [ I: ]
. . . sortiert + = y [ : j]
. . . Rückkehr sortiert