Lab Activity 4.2
MaximumSubArray.java
public int maxSubarrayCross(int[] a, int l, int m, int h) {
int leftSum = Integer.MIN_VALUE;
int sum = 0;
for (int i = m; i >= l; i--) {
sum += a[i];
if (sum > leftSum)
leftSum = sum;
}
int rightSum = Integer.MIN_VALUE;
sum = 0;
for (int i = m + 1; i <= h; i++) {
sum += a[i];
if (sum > rightSum)
rightSum = sum;
}
return leftSum + rightSum;
}
public int maxSubarrayAux(int[] a, int l, int h) {
if (l == h)
return a[l];
else {
int m = (l + h) / 2;
int bl = maxSubarrayAux(a, l, m);
int br = maxSubarrayAux(a, m + 1, h);
int bc = maxSubarrayCross(a, l, m, h);
int best = Math.max(Math.max(bl, br), bc);
return best;
}
}
public Integer maxSubarray(int[] a) {
// write your code here
return null;
}
public static void main(String[] args) {
int[] a = {13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7};
MaximumSubarray maxSubarray = new MaximumSubarray();
System.out.println("Maximum subarray = " + maxSubarray.maxSubarray(a));
}Last updated