public class BinarySearch {
public static void main(String[] args) {
int[] arr=new int[]{1,2,3,4,5,6,9};
int i = binarySearch(arr, 8);
int i1 = binarySearch(arr, 0, 6, 5);
System.out.println(i);
System.out.println(i1);
}
//非递归算法
static int binarySearch(int[] arr, int key){
int low=0; //数组最小索引值
int high=arr.length-1; //数组最大索引值
while(low<=high){
int mid=(low+high)/2;
if(key==arr[mid]){
return mid;
}else if(key>arr[mid]){
low=mid+1;
}else{
high=mid-1;
}
}
return -1; //数组中不存在key
}
//递归算法
static int binarySearch(int[] arr,int low,int high,int key) {
if (low > high) {
return -1;
}
int mid = (low + high) / 2;
if (key == arr[mid]) {
return mid;
} else if (key < arr[mid]) {
high = mid - 1;
return binarySearch(arr, low, high, key);
} else {
low = mid + 1;
return binarySearch(arr, low, high, key);
}
}
}
二分法查找
最新推荐文章于 2024-07-13 10:01:39 发布