Ejemplo n.º 1
0
int maxSubArraySum(int arr[], int l, int h)
{

   if (l == h)
     return arr[l];
   int m = (l + h)/2;
   return max(maxSubArraySum(arr, l, m),
              maxSubArraySum(arr, m+1, h),
              maxCrossingSum(arr, l, m, h));
}
Ejemplo n.º 2
0
int maxSubArraySum(int arr[], int low, int hi)
{
    //Base case: only 1 element
    if (low == hi)
        return arr[low];

    // Find mid point
    int mid = (low + hi ) >>1;

   // Return the max of the following three sums:
   // a) max subarray sum in the left half from mid
   // b) max subarray sum in the right half from mid
   // c) max subarray such that the subarray crosses midpoint

   return max(maxSubArraySum(arr, low, mid),\
              maxSubArraySum(arr, mid+1, hi),\
              maxCrossingSum(arr, low, mid, hi)
             );
}