二分查找就是指对于一个有序数列,取其中间值,与要查找的值比较,若大于,则舍弃右半部分序列,若小于则舍弃左半部分序列,其复杂度是O(logn)的。二分查找看似简单,但到处都说要想不出错很难。
inline int search(int *arr,int size,int key) { //内联查找函数,参数为序列数组,数组大小及查找的值
int left=0,right=size; //定义整型变量left置为0,right置为size
int mid; //定义整型变量mid
while(left<right) { //只要left小于right,就循环
mid=(left+right)>>1; //mid赋值为(left+right)>>1,即(left+right)/2
if(arr[mid]<key) left=mid+1; //如果arr[mid]小于key,left赋值为mid+1
else right=mid; //否则right赋值为mid
}
return left; //返回left
}
注:以上来自2017浴谷夏令营讲义
时间: 2024-11-07 23:59:19