用二分去查找元素要求数组的有序性或者拥有类似于有序的性质。、

 

 

 

查找5 

首先定义好最小值和最大值以及中间值

l= 0;r = n ; mid = l+r >>1;

如果mid = 35  >  5,把high指针指到 【5】

 

 

 现mid =  a[2];

mid = 8 > 5,吧high移到【mid-1】的位置 high = 【1】

 

 

 mid =  【0+1】 / 2 = 0 ;

 

找到key = 5

题目:

https://leetcode.cn/problems/binary-search/

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

 

 

 

 

 

 

  

Posted on 2022-05-29 00:14  LutixiaGit  阅读(23)  评论(0)    收藏  举报