一.二分查找法
- 介绍:二分查找法是一种寻址算法,在一个有序序列中找寻指的数值的下标
- 时间复杂度:O(logn)
二.思路
1.关键变量
- start 开始下标
- end 结束下标
- mid 中间小标
重点是找寻中间下标 array[mid] < a,说明a在array[mid]右边,此时变换start下标为start=mid+1 ,此时寻址从mid+1 到end ,array[mid] > a 同理,end下标变更为 end=mid-1 最终array[mid]==a时找到变量下标
三.实现
1.非递归实现
public static int dichotomy(int[] array,int a){
int start = 0;
int end = array.length-1;
while (start<=end){
int mid = (start + end)/2;
if(array[mid]==a){
return mid;
}
if(a<array[mid]){
end = mid-1;
}
if(a>array[mid]){
start = mid+1;
}
}
return -1;
}
2.递归实现
public static int recursionDichotomy(int[] array,int start,int end,int a){
if(start>end){
return -1;
}
int mid = (start+end)/2;
if(a==array[mid]){
return mid;
}
if(a>mid){
return recursionDichotomy(array,mid+1,end,a);
}
if(a<mid){
return recursionDichotomy(array,start,mid-1,a);
}
return -1;
}