Merge Sort(lista)
if (lista.tamaño = 1)
return lista[0]
listaIzquierda = crearLista[ lista[0] ... lista[mitad] ]
listaDerecha = crearLista[ lista[mitad+1] ... lista[final] ]
listaIzquierda = mergeSort(listaizquierda)
listaDerecha = mergeSort(listaDerecha)
return merge(listaIzquierda, listaDerecha)
merge(listaIz, listaDer)
listaUnida = []
while (las listas tienen elementos)
listaUnida.añadir( minimo(listaIz[0],listaDer[0]) )
if(listaIz o listaDer tienen elementos)
listaUnida.añadir( elementos restantes )