1. 二分法查找是一种非常高效的搜索方法,主要原理是每次搜索可以抛弃一半的值来缩小范围。
2. 二分法查找的时间复杂度是log(n),一般用于对普通搜索方法的优化
3. 二分法查找的适用情况一般满足以下几点:(1). 该数组数据量巨大;{2}. 该数组已经排序;(3). 一般要求找到的是某一个值
4. 什么时候我们可以大致判定该题需要用到二分法:(1). 需要对一道时间复杂度为n的题目进行优化;(2). 在题目中提到给到的数组已排序;(3). 只搜索一个值或一个位置
5. 二分法的基本代码如下:对于特定的题只需要修改某些细节即可。
public int search(int[] A, int target) {
int start = 0, end = A.length - 1;
while(start + 1 < end){
int mid = start + (end - start)/2;
if(A[mid] == target){
return mid;
}
if(A[mid] < target){
start = mid;
}else{
end = mid;
}
}
if(A[start] == target){
return start;
}
if(A[end] == target){
return end;
}
return -1;
}