import java.util.*;
//准备一个排序好的数组,一个key值,一个Max值,一个Min值,一个mid
//最大值索引大于等于中间值索引时循环
//如果key值小于中间值索引,mid-1,如果key大于mid,mid+1,如果key值等于中间值索引,则返回中间值索引
public class BSerch{
public static int BSerchFun(int[] arr,int key) {
int maxIndex = arr.length-1; //最大数的索引
int minIndex = 0; //最大数的索引
int midIndex; //中间值索引
while (maxIndex>=minIndex) {
//如果最大值大于最小值,就除以2
midIndex = (maxIndex+minIndex)/2;
//如果当前中位数大于key,max相对于mid索引向左移动一位
if(arr[midIndex]>key) {
maxIndex = midIndex - 1;
}
//如果当前中位数小于key,min索引向右移动一位
else if(arr[midIndex]<key) {
minIndex = midIndex + 1;
}
//如果当前中位数等于key,循环结束
else if(arr[midIndex] == key ) {
return midIndex;
};
}
return -1;
}
public static void main(String[] args) {
BSerch b = new BSerch();
int [] arr = {1,3,5,7,9,11,13};
int BSerchRes = b.BSerchFun(arr,9);
System.out.println("BSerchRes====:");
System.out.println(BSerchRes);
}
};