package sort;
public class TwoFenSearch {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,11,15,17};
int i1 = binarySearch(arr, 11);
System.out.println(i1);
int i2 = binarySearch(arr, 17,0,arr.length-1);
System.out.println(i2);
}
/**
* 循环查找
*/
public static int binarySearch(int[] arr,int num){
int low = 0;
int high =arr.length-1;
while(low<=high){
int middle = (low+high)/2;
if(num==arr[middle]){
return middle;
}else if(num>arr[middle]){
low=middle+1;
}else {
high=middle-1;
}
}
return -1;
}
/**
* 递归查找
*/
public static int binarySearch(int[] arr,int num,int low,int high){
int middle = (low+high)/2;
if(num<arr[low]||num>arr[high]||low>high){
return -1;
}
if(num<arr[middle]){
return binarySearch(arr,num,low,middle-1);
}else if(num>arr[middle]){
return binarySearch(arr,num,middle+1,high);
}else
return middle;
}
}
算法-二分查找算法
最新推荐文章于 2022-08-22 22:00:05 发布