public class binarySearch {
//二分查找法的循环求解
public static int biSearchWhile(int[] arr,int x) {
int lo=0,hi=arr.length-1;
while (hi >= lo) {
int mid=(lo + hi) / 2;
if (x < arr[mid]) {
hi=mid-1;
} else if (x > arr[mid]) {
lo=mid + 1;
} else {
return mid + 1;
}
}
return -1;
}
//二分查找法的递归求解
public static int biSearch(int[] myArr,int x,int lo,int hi) {
int mid =lo + (hi - lo) / 2;
if (lo > hi)
return -1;
else {
if (x < myArr[mid])
return biSearch(myArr,x,lo,mid - 1);
else if(x > myArr[mid])
return biSearch(myArr, x, mid + 1, hi);
else
return mid + 1;
}
}
public static void main(String[] args) {
int[] myArr= {1, 3, 5, 7, 9};
System.out.println(biSearchWhile(myArr, 3));
System.out.println(biSearch(myArr, 3, 0, myArr.length));
}
}
day04 二分查找法(循环和递归求解)
最新推荐文章于 2023-03-10 09:38:18 发布