给定一个有序整型数组, 实现二分查找。
public static int binarySearth (int[] array, int key) {
int left = 0;
int right = array.length-1;
while (left <= right) {
int mid = (left + right)/2;
if (array[mid] < key) {
left = mid + 1;
}else if (array[mid] > key) {
right = mid - 1;
}else {
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int[] array = {1,2,4,3,5,6,8,7,9,10};
Arrays.sort(array);
System.out.println(binarySearth(array, 8));
//返回下标7,因为返回的排序好之后的数的下标
//如果要找的数字没有找到,会返回一个负数,负数是多少是不确定的
}