返回mid的二分查找模板:
int binary_search(int[] nums,int target){
int left = 0,right = nums.length-1;
while(left<=right){
int mid = left+(right-left)/2;
if(nums[mid] == target) return mid;
else if(nums[mid] > target){
right = mid - 1;
从右端向mid逼近
}
else if(nums[mid] < target){
left = mid + 1;
从左端向mid逼近
}
}
return -1;
}
返回left的二分查找模板:
int binary_search(int[] nums,int target){
int left = 0, right = nums.length-1;
while(left<=right){
int mid = left+(right-left)/2;
if(nums[mid] == target) right = mid-1;
从右端向left逼近
else if(nums[mid] > target){
right = mid-1;
从右端向left逼近
}
else if(nums[mid] < target){
left = mid + 1;
}
}
if(left>=length || nums[left]!=target){
return -1;
}
return left;
}
返回right的二分查找模板:
int binary_search(int[] nums,int target){
int left = 0,right = nums.length-1;
while(left<=right){
int mid = left+(right-left)/2;
if(nums[mid] == target) left = mid+1;
从左端向right逼近
else if(nums[mid] > target){
right = mid-1;
}
else if(nums[mid] < target){
left = mid+1;
从左端向right逼近
}
}
if(right<0 || nums[right]!=target){
return -1;
}
return right;
}
习题1:


习题1链接
本文深入探讨了二分查找算法的三种实现方式:返回mid、返回left和返回right的二分查找模板。每种实现方式都有其独特的应用场景,通过详细的代码示例,读者可以更好地理解和掌握二分查找算法的核心思想。
704

被折叠的 条评论
为什么被折叠?



