- 二分查找非递归实现
public static int binSearch(int[] nums,int k){
int i = 0;
int j = nums.length-1;
int mid;
while(i<=j){
mid = i+((j-i)>>1);//防止溢出,而且使用位运算更加高效//mid = ((i+j)>>>1);
if(nums[mid]==k){
return mid;
}else if(nums[mid]>k){
j = mid-1;
}else{
i = mid+1;
}
}
return -1;
}
- 二分查找递归实现
public static int binSearch(int[] nums,int k,int i,int j){
if(i>j){
return -1;
}
int mid = i+((j-i)>>1);//mid = ((i+j)>>>1);
if(nums[mid]==k){
return mid;
}else if(nums[mid]>k){
return binSearch(nums,k,i,mid-1);
}else{
return binSearch(nums,k,mid+1,j);
}
}