1、手动二分查找
二分模板其实有两套,主要是根据要调整的是 left 指针还是 right 指针来判断。
口诀:加一左为中,对半右为中
- 调整left时:左区间端点可能包含目标值的时候
public static int binarySearch(int[] arr, double num){
int left = 0;
int right = arr.length - 1;
while(left < right){
int mid = (left + right + 1) >> 1;
if(arr[mid]>num){
right = mid - 1;
}else{
left = mid;
}
}
return left;
}
- 调整right时:右区间端点可能包含目标值的时候
public static int binarySearch(int[] arr, double num){
int left = 0;
int right = arr.length - 1;
while(left < right){
int mid = (left + right) >> 1;
if(arr[mid] < num){
left = mid + 1;
}else{
right = mid;
}
}
return left;
}
2、通过Java工具类
int ans = Arrays.binarySearch(arr, num);
本文介绍了如何在Java中手动实现两种不同情况下的二分查找算法,一种是左指针可能包含目标值,另一种是右指针可能包含目标值。同时,也展示了如何利用Java内置的Arrays工具类进行二分查找。这些方法对于高效地搜索有序数组非常有用。
3283

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



