1.递归:
public static int BinarySrarch(int[]a,int target,int low,int high) {
int mid = (low+high)/2;
if(a[mid]==target) return mid;
if (target<a[mid]) {
high = mid-1;
return BinarySrarch(a, target,low,high);
}
if(target>a[mid]){
low = mid+1;
return BinarySrarch(a, target, low, high);
}
return -1;
}
2.非递归:
public static int BinarySrarch(int[]a,int target)
{
int low = 0;
int high = a.length-1;
while (low<=high) {
int mid = (low+high)/2;
if (a[mid] == target) {
return mid;
}
else if (a[mid]<target) {
low = mid+1;
}
else {
high = mid-1;
}
}
return -1;
}