
Encuentra_Max_Subarreglo_Cruzando( A, bajo, medio, alto )
1 suma_izq = -infinito
2 suma = 0
3 for i = medio downto bajo
4     suma += A[i]
5     if suma > suma_izq 
6          suma_izq = suma
7          max_izq = i
8 suma_der = -infinito
9 suma = 0
10 for j = medio+1 to alto
11    suma += A[j]
12    if suma > suma_der
13         suma_der = suma
14         max_der = j
15 return( max_izq, max_der, suma_izq + suma_der )



Encuenta_Subarreglo_Máximo( A, bajo, alto )
 1 if bajo == alto
 2     return( bajo, alto, A[bajo] )
 3 else medio = floor( (bajo+alto)/2 ) 
 4     (bajo_izq, alto_izq, suma_izq ) =
           Encuenta_Subarreglo_Máximo( A, bajo, medio )
 5     (bajo_der, alto_der, suma_der ) =
           Encuenta_Subarreglo_Máximo( A, medio+1, alto )
 6     (bajo_cruza, alto_cruza, suma_cruza ) =
           Encuentra_Max_Subarreglo_Cruzando( A, bajo, medio, alto )
 7 if suma_izq >= suma_der and suma_izq >= suma_cruza
 8     return (bajo_izq, alto_izq, suma_izq
 9 if suma_der >= suma_izq and suma_der >= suma_cruza
10    return (bajo_der, alto_der, suma_der
11 else return (bajo_cruza, alto_cruza, suma_cruza
