二分法
在数组中寻找某一个值,通过将数组区间一分为二的方法,不断逼近目标值。
例
在一维有序数组中,查找与key值相等的元素,返回此元素是数组中的第几个元素。
算法
int binarySearch(vector<int> arr,int key){
int left=0; //数组最小索引值
int right=arr.size()-1; //数组最大索引值
while(left<right){
int mid==(left+right)/2;//得到中间值,将数组一分为二
if(key==arr[mid]){
return mid+1;
}else if(key>arr[mid]){//key大于中间值,所以在右侧的二分之一数组中再次寻找
left=mid+1;
}else{//同理
right=mid-1;
}
}
return -1;//没有找到
}