definire la funzione " mergesort " . Questa funzione di base richiama sé stesso ricorsivamente , dividendo la dimensione dell'elenco a metà con ogni chiamata . Una volta che la funzione mergesort colpisce una lista con un solo elemento , la ricorsione si ferma e l'elemento ritorni. Come si snoda ricorsione mergesort , ogni lista più piccola è fuso insieme in modo ordinato . Questo esempio mostra una funzione mergesort di base che prende una lista come argomento :
>>> def mergesort ( Li ) :
. . . if len (li) < 2 :
. . . tornare li
. . . mid = len (li) /2
. . . primo = mergesort ( li [ : mid ] ) per
. . . ultimo = mergesort ( li [ mid : ] ) per
. . . tornare unire ( primo, ultimo ) economici 2
Impostare il metodo di fusione . Questa funzione servirà come il metodo di ordinamento , ma restituisce una lista ordinata di elementi . Il metodo di fusione prende due liste già ordinati . Viene quindi definito un elenco interno " ordinato " che rappresenterà le liste di argomenti ordinati combinati. Il metodo merge compie questo prendendo il più piccolo elemento e inserendolo in un nuovo elenco " allineati " . Una volta che una delle estremità liste , l'altra lista è inserita nella sua interezza
>>> def unione ( x , y) : .
. . . ordinati = [ ]
3
Unire le liste nel metodo di unione. Il ciclo "while" dell'esempio confronta ogni elemento della lista per voce , prendendo il più piccolo elemento e inserendolo in un nuovo elenco " allineati " . Una volta che uno degli elenchi finisce , l'altra lista è inserita nella sua interezza , e la nuova lista ordinata viene restituito :
. . . i, j = 0 , 0
. . . mentre i < len ( x ) e j < len ( y) :
. . . se x [ i] < = y [ j ] :
. . . sorted.append ( x [ i] ) per
. . . i + = 1
. . . altra cosa :
. . . sorted.append ( y [ j ] ) per
. . . j + = 1
. . . ordinati + = x [i: ]
. . . ordinati + = y [ : j ]
. . . tornare ordinati
Programmazione © www.354353.com