/** * Demo of binary search on ints. */ public class BinarySearch { // iterative binary search public static int binarySearchIter(int[] a, int value) { int start = 0; int end = a.length - 1; while (start <= end) { int middle = (start + end) / 2; if (value == a[middle]) { return middle; } else if (value < a[middle]) { end = middle - 1; } else { start = middle + 1; } } return -1; // not found } // recursive binary search public static int binarySearch(int[] a, int value) { return recBinarySearch(a, value, 0, a.length - 1); } // search a for value between indices start and end private static int recBinarySearch(int[] a, int value, int start, int end) { if (start > end) { return -1; } else { int middle = (start + end) / 2; if (a[middle] == value) { return middle; } else if (a[middle] < value) { return recBinarySearch(a, value, middle + 1, end); } else { // a[middle] > value return recBinarySearch(a, value, start, middle - 1); } } } public static void main(String[] args) { int[] a = {1, 3, 5, 6, 9}; // must be sorted for binary search! System.out.println("Found value at index " + binarySearch(a, 6)); } }