find the max block of an array by splitting it into three parts: left, middle, right. And then reverse the array, and find the largest element.
public static int maxBlock(int data[], int n) {
// Divide and conquer
public static void out1(int data[], int n) {
// 1 element on the left, the rest of the array on the right
public static void out2(int data[], int n) {
// All but 1 element on the left and the remaining element on the right
public static void out3(int data[], int n) {
// Swap the first and last elements, reverse the remaining array
public static void reverse(int data[], int n) {
// Return the index of the largest element in the array. Divide and conquer
// with a left half, a middle element, and a right half. The largest element
// of an empty array does not make sense so you should never call the
// recursive method on an empty array.
public static int largest(int data[], int n) {