Nwlapcug.com


Come unire una sorta in Python

Come unire una sorta in Python


Ordinamento di elenchi di dati è un problema che affliggeva i programmatori fin dall'inizio della programmazione informatica. Ordinare qualsiasi elenco di dati può finire come un'attività ad alta intensità di memoria e di tempo. Per questo motivo, metodi di ordinamento differenti sono state inventate per ridurre al minimo la sfida e sforzo dell'ordinamento. Un metodo è Unione di ordinamento. Si suddivide in modo ricorsivo un elenco elementi singolari e ricombina la lista in forma ordinata. Qualsiasi linguaggio di programmazione che supporta la ricorsione, come Python, possa attuare una sorta di Unione.

Istruzioni

1

Definire la funzione di "mergesort". Questa funzione di base chiama se stessa in modo ricorsivo, il formato di elenco a metà con ogni chiamata di scissione. Una volta i successi di funzione mergesort un elenco con un elemento, la ricorsione termina e restituisce l'elemento. Come si snoda la ricorsione mergesort, ogni più piccolo elenco viene unita in base all'ordinamento. Questo esempio visualizza una funzione mergesort base che accetta un elenco come argomento:

mergesort(li) def:

... se len(li) < 2:

... tornare li

... metà = len(li) / 2

... first = mergesort(li[:mid])

... Ultima = mergesort(li[mid:])

... ritorno Unione (primo, ultimo)

2

Impostare il metodo merge. Questa funzione servirà come il metodo di ordinamento; Restituisce un elenco ordinato di elementi. Il metodo merge utilizza due elenchi già ordinati. Definisce quindi un elenco interno "ordinato" che rappresenterà gli elenchi di argomenti ordinati combinato. Il metodo merge compie questo prendendo il più piccolo elemento e inserirla in un nuovo elenco "ordinati". Una volta uno degli elenchi finisce, l'elenco è inserito nella sua interezza.

Unione di def (x, y):

... ordinato =]

3

Unire le liste nel metodo merge. Il ciclo "while" nell'esempio confronta ogni elenco voce per voce, prendendo il più piccolo elemento e inserirla in un nuovo elenco "ordinato". Una volta uno degli elenchi finisce, l'altro elenco viene inserito nella sua interezza e ordinato secondo il nuovo elenco è restituito:

... i, j = 0, 0

... mentre io < len(x) e j < len(y):

... se x [i] < = y [j]:

... sorted.append(x[i])

. . . i += 1

... altro:

... sorted.append(y[j])

. . . j += 1

... ordinato + = x [I:]

... ordinato y + = [: j]

... ritorno ordinato