/**
* 二分查找,循环实现
* @param key 查找的目标值
* @param value 数组
* @return
*/
public static int binarySearchLoop(int key,int[] value){
int low = 0;
int high = value.length-1;
while(low<=high){
int mid = (low+high)/2;
if(key<value[mid]){
high = mid - 1;
}else if(key>value[mid]){
low = mid+1;
}else{
return mid;
}
}
return -1;
}
/**
* 二分查找,递归实现
* @param key 要查找的目标值
* @param value 数组
* @param low 最小值的索引index
* @param high 最大值的索引
* @return
*/
public static int binarySearchMethod(int key,int[] value,int low,int high){
int mid = (low + high)/2;
int result = -1;
if(low<=high){
if(key>value[mid]){
result = binarySearchMethod(key, value,mid+1,high);
}else if(key<value[mid]){
result = binarySearchMethod(key, value, low, mid - 1);
}else{
result = mid;
}
}
return result;
}
* 二分查找,循环实现
* @param key 查找的目标值
* @param value 数组
* @return
*/
public static int binarySearchLoop(int key,int[] value){
int low = 0;
int high = value.length-1;
while(low<=high){
int mid = (low+high)/2;
if(key<value[mid]){
high = mid - 1;
}else if(key>value[mid]){
low = mid+1;
}else{
return mid;
}
}
return -1;
}
/**
* 二分查找,递归实现
* @param key 要查找的目标值
* @param value 数组
* @param low 最小值的索引index
* @param high 最大值的索引
* @return
*/
public static int binarySearchMethod(int key,int[] value,int low,int high){
int mid = (low + high)/2;
int result = -1;
if(low<=high){
if(key>value[mid]){
result = binarySearchMethod(key, value,mid+1,high);
}else if(key<value[mid]){
result = binarySearchMethod(key, value, low, mid - 1);
}else{
result = mid;
}
}
return result;
}