递归实现
public int binarySearch(int[] arr, int target) {
//在arr的[l,r]进行查找
int n = arr.length - 1;
return _binarySearch(arr, target, 0, n);
}
private int _binarySearch(int[] arr, int target, int l, int r) {
if (l > r) {
return -1;
} else {
int mid = l + (r - l) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
return _binarySearch(arr, target, mid + 1, r);
} else {
return _binarySearch(arr, target, l, mid - 1);
}
}
}
非递归实现:
public int binarySearch(int[] arr,int target){
//在arr[l,r]进行查找
int l = 0,r= arr.length-1;
while(l<=r){
int mid = l+(r-l)/2;
if(arr[mid]==target){
return mid;
}
else if(arr[mid]<target){
l=mid+1;
}else{
r= mid-1;
}
}
return -1;
}
本文详细介绍了二分查找算法的两种实现方式:递归和非递归。通过具体代码示例,展示了如何在一个有序数组中查找指定元素的位置。
1085

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



