前提条件 查找的必须已经排序
public class BinarySearchTest {
public static void main(String[] args) {
int[] arr = new int[]{1, 10, 20, 30, 49, 69, 70, 90};
System.out.println(arr[binarySearch(arr, 49)]);//找不到抛个数组下标越界异常
}
/**
* 二分查找算法
*
* @param arr 有序数组
* @param data 查找数据
* @return index 下表,未查找到时返回-1
*/
public static int binarySearch(int[] arr, int data) {
int low = 0;
int height = arr.length -1;
while(low <= height){
int mid = (height + low)/2;
if (arr[mid] < data) {
low = mid + 1;
} else if (data < arr[mid]) {
height = mid -1;
}else{
return mid;
}
}
return -1;//
}
}