```
/**
* 二分查找
* 二分查找的前提是一个有序数组,二分查找能够大大提高查找效率,他的时间复杂度是o(log2N) 以2为底,N的对数。
* 实现:有序N个元素的数组,要查找x,第一次查找-剩余N/2,第二次查找-剩余N/4,第三次查找-剩余N/8,直到最后一次查找,剩余1
* 假设查找了n次,那也就是说在2^n无限接近于N的时候才会找到,可以得出n=(以2为底N的对数)
*/
public class BinarySearch {
public static void main(String[] args) {
int[] toSearchArr = {1,2,3,4,5,6,7,8,9,10}
int index = toSearchValue(toSearchArr,9)
System.out.println("9的索引为"+index)
}
public static int toSearchValue(int[] arr, int value) {
int leftIndex = 0
int rightIndex = arr.length - 1
int midIndex = 0
while(leftIndex < rightIndex) {
midIndex = (leftIndex + rightIndex) / 2
if(arr[midIndex] == value) {
return midIndex
}else if(arr[midIndex] > value) {
rightIndex = midIndex - 1
}else if(arr[midIndex] < value) {
leftIndex = midIndex + 1
}
}
return midIndex
}
}
```