public int binarySearch(int[] nums, int target) {
// write your code here
if(target>nums[nums.length-1] || target<nums[0])
return -1;
int l = 0 , r = nums.length-1;
int res = -1;
while(l <= r){
int mid = (r-l)/2+l;
if(nums[mid] == target){
res = mid;
break;
}
else if(nums[mid] > target)
r = mid-1;
else
l = mid+1;
}
return res;
}
非递归版:
public static int binarySearch(int[] nums , int target){
if(nums == null || nums.length <= 0)
return -1;
if(target > nums[nums.length-1] || target < nums[0])
return -1;
return binarySearch(nums , target , 0 , nums.length-1);
}
public static int binarySearch(int[] nums , int target , int l , int r){
if(l > r)
return -1;
int mid = (r-l)/2+l;
if(nums[mid] == target)
return mid;
else if(nums[mid] < target)
return binarySearch(nums , target , mid+1 , r);
else
return binarySearch(nums , target , l , mid-1);
}