Binary Search
二分查找,针对的是有序表 有序表 有序表
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
int key = 7;
int index = binarySearch(arr,key);
System.out.println(index);
}
public static int binarySearch(int[] arr,int key) {
int l = 0;
int r = arr.length-1;
int mid = 0;
if(key < arr[l] || key > arr[r] || l > r){
return -1;
}
while(l<=r) {//这里必须是l<=r,如果只是小于会出错,甚至会查不到某些值
mid = (l+r)/2;
if(key < arr[mid]) {
r = mid-1;
}else if(key > arr[mid]) {
l = mid+1;
}else {
return mid;
}
}
return -1;
}