class Solution { // iterative public int search(int[] nums, int target) { // Corner case if(nums == null || nums.length == 0) return -1; int low = 0; int high = nums.length-1; while(low <= high){ int mid = (high-low)/2 + low; if(nums[mid] == target) return mid; if(nums[mid] < target) low = mid + 1; else high = mid - 1; } return -1; } // Recursive public static int Rsearch(int[] nums, int low, int high, int target){ if(low > high) return -1; int mid = low + (high-low)/2; if(target == nums[mid]) return mid; else if(target < nums[mid]) return Rsearch(nums, low, mid-1, target); else return Rsearch(nums, mid+1, high, target); } }
A good blog to read about binary Search callicoder
Top comments (0)