二分查找法
使用二分查找法的前提是:数组有自然顺序
拿要查找的元素和中位数比较,如果大于中位数,则最小下标右移,否则最大下标左移
直到找到为止,如果min>max还没找到,证明元素不存在数组中;
public Integer binarySearch(int[] arr, Integer num) {
if (num>arr[arr.length-1]||num<arr[0]){
//如果不在数组最大与最小范围,直接略过查找
return -1;
}
int min = 0;
int max = arr.length-1;
while (min<=max){
int mid = (min+max)/2;
if (num==arr[mid]){
return mid;
}else if (num>arr[mid]){
min=mid+1;
}else if (num<arr[mid]){
max=mid-1;
}
}
return -1;
}