算法:二分法查找(折半查找法)
//二分查找法(折半查找法)
public static int halfSearch(int[] arr,int number){
int min =0; //最小下标
int max =arr.length-1; //最大下标
int mid = 0; //中间下标
while (min<=max){
//没找到,更新范围继续找
mid = (min+max)/2;
if (arr[mid]>number){ //number在mid的左边
max = mid-1; //改变最大下标
}else if(arr[mid]<number){ //number在mid的右边
min = mid+1; //改变最小下标
}else{
return mid;
}
}
return -1;
}
这是最经典的折半查找,而在面试的时候往往会对某些经典的数据结构和算法进行魔改,这道题总是被改成以下的问题:
1.使用二分法对一个数组中的数据进行查找,返回目标数值所在的下标:包含与目标值重复的所有左边的值
2.使用二分法对一个数组中的数据进行查找,返回目标数值所在的下标:包含与目标值重复的所有右边的值
3.使用二分法对一个数组中的数据进行查找,返回所有目标数值所在的下标
这些雷你踩过了么?
PS:今天刚踩到了3号复合雷,前来报到!
网友评论