public class Main { static int findMax(int[] A, int i, int j){ if(i < j){ int a = findMax(A, i, (i + j) / 2); int b = findMax(A, (i + j) / 2 + 1, j); return (a > b ? a : b); } else return A[i]; } static int binarySearch(int[] A, int i, int j, int key){ if(i <= j){ int mid = (i + j) / 2; if(A[mid] == key) return mid; else if(A[mid] < key) return binarySearch(A, mid+1, j, key); else return binarySearch(A, i, mid-1, key); } return -1; } public static void main(String[] args){ int A[] = {1,9,6,7,4,2,0,3}; System.out.printf("Maximum of A is: %d\n", findMax(A, 0, A.length-1)); int B[] = {0,1,2,3,4,5,6,7,8,9}; System.out.printf("Index of %d in B is: %d\n", 6, binarySearch(B, 0, B.length-1, 6)); } }