public class BinarySearchTest { // Predicted Output: 5 // Actual Output: unknown (gotta test it) public static void main(String[] args) { int[] nums = new int[10]; // Create an array of numbers from one to ten for (int i=0;i<=10;i++) { int[i] = i; } RecursiveBinarySearcher rbs = new RecursiveBinarySearcher(); IterativeBinarySearcher ibs = new IterativeBinarySearcher(); System.out.println(rbs.binarySort(nums, 0, 9, 6)); System.out.println(ibs.binarySort(nums, 0, 9, 6)); } } class RecursiveBinarySearcher { public int binarySearch(int[] numbers, int low, int high, int target) { int midNum = Math.round(low + (high - low) / 2); if (numbers[midNum] == target) { return midNum; } else if (numbers[midNum] < target) { return binarySearch(numbers, midNum + 1, numbers.length, target); } else if ((hi - low) <= 0) { // Not found return -1; } else { return binarySearch(numbers, low, midNum - 1, target); } } } class IterativeBinarySearcher { public binarySearch(int[] numbers, int low, int high, int target) { while ((high - low) > 0) { // search int midNum = Math.round(low + (high - low) / 2); if (numbers[midNum] == target) { return midNum; } else if (numbers[midNum] < target) { low = midNum + 1; } else if (numbers[midNum] > target) { high = midNum - 1; } } } } } }