1
La lista risultante viene creata vuota e poi riempita con i valori ordinati
def fusione(lista1, lista2):
n1 = len(lista1)
n2 = len(lista2)
lista3 = []
i = j = 0
while(i < n1) and (j < n2):
if lista1[i] < lista2[j]:
lista3.append(lista1[i])
i += 1
else:
lista3.append(lista2[j])
j += 1
while(i < n1):
lista3.append(lista1[i])
i += 1
while(j < n2):
lista3.append(lista2[j])
j += 1
return lista3
2
L’operazione di append potrebbe rallentare l’esecuzione del codice.
La lista risultante viene creata della lunghezza giusta e poi riempita con i valori ordinati.
def fusione(lista1, lista2):
n1 = len(lista1)
n2 = len(lista2)
n3 = n1+n2
lista3 = n3*[0]
i = j = k = 0
while(i < n1) and (j < n2):
if lista1[i] < lista2[j]:
lista3[k] = lista1[i]
i += 1
else:
lista3[k] = lista2[j]
j += 1
k += 1
while(i < n1):
lista3[k] = lista1[i]
i += 1
k += 1
while(j < n2):
lista3[k] = lista2[j]
j += 1
k += 1
return lista3