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