1. 二分查找
// 循环查找
public staticint binarySearch1(int a[], int target) {
//b为下限,c为上限
int b= 0, c = a.length - 1;
intmid = 0;
if(b>c||a[b]>target||a[c]<target){
//不满足基本条件,返回-1
return-1;
}
while(b <= c) {
mid= (b + c) / 2;
if(target == a[mid])
//找到返回下标
returnmid;
elseif (target > a[mid])
b= mid + 1;
else
c= mid - 1;
}
//没找到,返回-1
return-1;
}
2. 二分查找
// 折半查找,递归查找
public staticint binarySearch(int a[], int b, int c, int target) {
intmid = (b + c) / 2;
if (b> c||target<a[b]||target>a[c]) {
//不满足基本条件,返回-1
return-1;
}else{
if(target> a[mid]) {
return binarySearch(a, mid + 1, c, target);
}
elseif(target < a[mid]) {
return binarySearch(a, b, mid - 1, target);
}
else{
//找到,返回下标
returnmid;
}
}
}