您的位置:首页 > 其它

二分查找

2016-09-12 20:55 92 查看
注意必须是排好序的数组

方法一:

public static int binarySearch(int[] array,int n){
int start=0;
int end=array.length-1;
int middle=(start+end)/2;
while(start<=end){
if(n>array[middle]){
start=middle+1;
}else if(n<array[middle]){
end=middle-1;
}else{
return middle;
}
}
return -1;
}

方法二:递归
/**
* 递归写法
* @param array
* @param n
* @param start
* @param end
* @return
*/
public static int binarySearch(int[] array,int n,int start,int end){
int middle=(start+end)/2;
if(n>array[end] || n<array[start] || start>end){
return -1;
}
if(n>array[middle]){
return binarySearch(array, n, middle+1, end);
}else if(n<array[middle]){
return binarySearch(array, n, start, middle-1);
}else{
return middle;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: