diff --git a/binary_search.java b/binary_search.java new file mode 100644 index 0000000..78cb494 --- /dev/null +++ b/binary_search.java @@ -0,0 +1,60 @@ +public class binary_search { + + public static void main(String[] args) { + int[] intArray = { -22, -15, 1, 7, 20, 35, 55 }; + + System.out.println(iterativeBinarySearch(intArray, -15)); + System.out.println(iterativeBinarySearch(intArray, 35)); + System.out.println(iterativeBinarySearch(intArray, 8888)); + System.out.println(iterativeBinarySearch(intArray, 1)); + + System.out.println(recursiveBinarySearch(intArray, -15)); + System.out.println(recursiveBinarySearch(intArray, 35)); + System.out.println(recursiveBinarySearch(intArray, 8888)); + System.out.println(recursiveBinarySearch(intArray, 1)); + } + + public static int iterativeBinarySearch(int[] input, int value) { + int start = 0; + int end = input.length; + + while (start < end) { + int midpoint = (start + end) / 2; + System.out.println("midpoint = " + midpoint); + if (input[midpoint] == value) { + return midpoint; + } + else if (input[midpoint] < value) { + start = midpoint + 1; + } + else { + end = midpoint; + } + } + + return -1; + } + + public static int recursiveBinarySearch(int[] input, int value) { + return recursiveBinarySearch(input, 0, input.length, value); + } + + public static int recursiveBinarySearch(int[] input, int start, int end, int value) { + if (start >= end) { + return -1; + } + + int midpoint = (start + end) / 2; + System.out.println("midpoint = " + midpoint); + + if (input[midpoint] == value) { + return midpoint; + } + else if (input[midpoint] < value) { + return recursiveBinarySearch(input, midpoint + 1, end, value); + } + else { + return recursiveBinarySearch(input, start, midpoint, value); + } + } +}