class BinarySearch {
	public static void main(String [] args) {
		int [] arr = {12, 15, 19, 23, 45, 100};

		System.out.println("15: " + search(arr, 15));
		System.out.println("15: " + find(arr, 15));
		System.out.println("24: " + search(arr, 24));
		System.out.println("24: " + find(arr, 24));
	}

	static boolean search(int [] a, int val) {return search(a, 0, a.length-1, val);}
	static int find(int [] a, int val) {return find(a, 0, a.length-1, val);}

	static boolean search(int [] a, int first, int last, int val) {
		System.out.println("Searching array from " + first + " to " + last);
		if (first > last) return false;

		int mid = (first + last) / 2;
		if (a[mid] == val) 
			return true;
		else if (val < a[mid])
			return search(a, first, mid-1, val);
		else
			return search(a, mid+1, last, val);
	}

	static int find(int [] a, int first, int last, int val) {
		if (first > last) return -1;

		int mid = (first + last) / 2;
		if (a[mid] == val) 
			return mid;
		else if (val < a[mid])
			return find(a, first, mid-1, val);
		else
			return find(a, mid+1, last, val);
	}
}


	
