Merge Sort

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 )