1.二分查找

1.模板

int search(vector<int>& nums, int target) {
    int l=0;
    int r=nums.size();
    int mid;
    while(l<r){
        mid=(l+r)/2;
        if(nums[mid]<target){
            l=mid+1;
        }else if(nums[mid]>target){
            r=mid;
        }else{
            return mid;
        }
    }
    return -1;
}

2.分析

在数组范围内不断缩小范围为一半,最后没找到l=r

3.复杂度分析

时间复杂度:O(log n),其中 n 是数组的长度。
空间复杂度:O(1)。

posted @ 2022-08-30 19:59  lwx_R  阅读(21)  评论(0)    收藏  举报