sort/doc/pseudo/mergesort.txt

44 lines
1.2 KiB
Plaintext

entrada: array: arreglo de n datos; n: tamaño del arreglo
salida: arreglo ordenado
funcion mergesort(array, n)
correr_mergesort(array, 0, n - 1);
retorna array
fin funcion
funcion correr_mergesort(array, izquerda, derecha)
si izquerda != derecha entonces
medio = (izquerda + derecha) / 2
correr_mergesort(array, izquerda, medio)
correr_mergesort(array, medio + 1, derecha)
unir(array, izquerda, medio + 1, derecha)
fin si
fin funcion
funcion unir(array, previo_izquerda, previo_medio, derecha)
i = 0
izquerda = previo_izquerda
medio = previo_medio - 1
far_derecha = derecha - izquerda + 1
mientras que previo_izquerda <= medio y previo_medio <= derecha hacer
si array[previo_izquerda] < array[previo_medio] entonces
temp[i++] = array[previo_izquerda++]
sino
temp[i++] = array[previo_medio++]
fin si
fin mientras
mientras que previo_izquerda <= medio hacer
temp[i++] = array[previo_izquerda++]
fin mientras
mientras que previo_medio <= derecha hacer
temp[i++] = array[previo_medio++]
fin mientras
para i = 0 mientras que i < far_derecha con paso i = i + 1 hacer
array[izquerda + i] = temp[i]
fin para
fin funcion