Ordinamento di elenchi di dati è un problema che ha tormentato i programmatori dall'inizio della programmazione informatica . Ordinamento di un elenco di dati può finire come un ricordo - e tempo - intensivo compito . A causa di questo , diversi metodi di ordinamento sono state inventate per minimizzare la sfida e lo sforzo di smistamento . Un metodo è unire ordinamento . Si suddivide una lista ricorsivamente in elementi singolari e ricombina la lista in forma ordinata . Qualsiasi linguaggio di programmazione che supporta la ricorsione , come Python , può implementare una sorta di unione. Cose che ti serviranno 
 Python Interpreter con Interactive Development Environment 
 Mostra più istruzioni 
 1 
 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