diff --git a/src/main/java/com/thealgorithms/others/MaximumSubArraySum.java b/src/main/java/com/thealgorithms/others/MaximumSubArraySum.java new file mode 100644 index 000000000000..0463c80d0c32 --- /dev/null +++ b/src/main/java/com/thealgorithms/others/MaximumSubArraySum.java @@ -0,0 +1,47 @@ +package others; + +public class MaximumSubArraySum { + //Maximum Subarray Sum using Divide and Conquer algorithm + + + public static int MaximumSum(int[] Arr, int firstindex, int lastindex) { + + if (lastindex == firstindex) {//if the first index and the last index of array are same + return Arr[ firstindex ];//it means array contains only one element + //and this element equals maximum subarray sum. + } + + // Finding middle element's index of the array + int middle = ( firstindex + lastindex ) / 2; + + // Finding maximum subarray sum for the left subarray + + int leftMax = -1000000000; + int sum = 0; + for (int i = middle; i >= firstindex; i--) { + sum += Arr[ i ];//addition for sum + if (sum > leftMax) { + leftMax = sum; + } + } + + // Find maximum subarray sum for the right subarray + int rightMax = -1000000000;//should be minimum value + sum = 0; + for (int i = middle + 1; i <= lastindex; i++) { + sum += Arr[ i ];//addition for sum + if (sum > rightMax) { + rightMax = sum; + } + } + + // Recursive part + int maxLeftRight = Math.max (MaximumSum (Arr, firstindex, middle),//left part of the array + MaximumSum (Arr, middle + 1, lastindex));//right part of the array + + // return maximum of the three + return Math.max (maxLeftRight, leftMax + rightMax); + } + + +}
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: