public int search(int[] nums, int target) {
//二分查找可以利用循环迭代和递归两种方式来实现,这里先介绍第一种循环遍历的方式
int len=nums.length;
int start=0;
int end=nums.length-1;
while (start<=end){
int mid=(start+end)/2+start;
if (nums[mid]>target){
end=mid-1;
}else if (nums[mid]<target){
start=mid+1;
}else {
return nums[mid];
}
}
return -1;
}
递归写法:
public int search(int[] nums, int target) {
return binSearch(nums,0,nums.length-1,target);
}
private int binSearch(int[] nums,int low,int high,int target){
if (low>high){
return -1;
}
int mid=low+(high-low)/2;
if (nums[mid]>target){
return binSearch(nums, low, mid-1,target);
}else if (nums[mid]<target){
return binSearch(nums,mid+1,high,target);
}else {
return mid;
}
}