package cn.zhuang.Search;
public class BinarySearch {
/*
* 用递归方式二分查找
*/
public static int searchRecursive(int[] data , int from, int end , int target){
int middle;
if(from > end){
return Integer.MAX_VALUE;
}
middle = (from+end)/2;
if(data[middle] == target){
return middle;
}else if(data[middle] < target){
return searchRecursive(data, middle + 1, end, target);
}else{
return searchRecursive(data, from, middle - 1, target);
}
}
/*
* 用循环方式查找
*/
public static int searchLoop(int[] data,int target){
int start = 0;
int end = data.length - 1;
while(start<end){
int middle = (start + end)>>1;//相当于(start+end)/2
if(data[middle] == target){
return middle;
}
else if(data[middle] < target){
start = middle + 1;
}else{
end = middle - 1;
}
}
return Integer.MAX_VALUE;//找不到
}
}
二分查找
最新推荐文章于 2022-02-16 14:31:27 发布