LeetCode704:二分查找
递归
class Solution {
public int search(int[] nums, int target) {
return search(nums,target,0,nums.length-1);
}
public int search(int[] nums,int target, int start, int end){
if (start > end){
return -1;
}
int mid = (start+end) / 2;
if (target == nums[mid]){
return mid;
}
if (target > nums[mid]){
return search(nums, target, mid+1, end);
}
if (target < nums[mid]){
return search(nums, target, start, mid-1);
}
return -1;
}
}
非递归
class Solution {
public int search(int[] nums, int target,int start, int end) {
int left = start;
int right = end;
while (left <= right) {
int mid = (right - left) / 2 + left;
int num = nums[mid];
if (num == target) {
return mid;
} else if (num > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
}