package com.kpatil.search; public class BinarySearch { /** * Returns true if the given element is found in the list supplied. * * @param list of integers * @param element to search * @return true if a given element is found in the list * */ public static boolean binarySearch(int[] list, int k) { if (list == null || list.length == 0) { return false; } int low = 0; int high = list.length - 1; while (low <= high) { // int mid = (high + low) / 2; int mid = low + ((high - low) / 2); if (list[mid] == k) { return true; } else if (list[mid] > k) { high = mid - 1; } else { low = mid + 1; } } return false; } }
JUnit test cases:
package com.kpatil.test; import static org.junit.Assert.*; import org.junit.Test; import com.kpatil.search.BinarySearch; public class BinarySearchTest { @Test public void test1() { int[] list = { 3, 5, 7, 9, 11, 54, 59, 123 }; assertEquals(true, BinarySearch.binarySearch(list, 123)); } @Test public void test2() { int[] list = { 3, 5, 7, 9, 11, 54, 59, 123 }; assertEquals(false, BinarySearch.binarySearch(list, 152)); } @Test public void test3() { int[] list = null; assertEquals(false, BinarySearch.binarySearch(list, 2)); } @Test public void test4() { int[] list = {2}; assertEquals(true, BinarySearch.binarySearch(list, 2)); } @Test public void test5() { int[] list = {}; assertEquals(false, BinarySearch.binarySearch(list, 25)); } }
No comments:
Post a Comment