您的位置:首页 > 其它

二分查找

2016-04-13 16:18 309 查看
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;//找不到
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: