704.二分查找

题目:[https://leetcode-cn.com/problems/binary-search/description/]
思路:实现二分查找,对于有序序列的一组查找方式。通过将目标值与中值进行比较,不断缩小范围,找到值到方法。
代码:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        auto be=nums.begin(),ed=nums.end(),mid=nums.begin()+(ed-be)/2;//初始化二分查找到上下边界及中值
        while (*mid!=target&&mid!=ed) {//目标找到了吗,
            if (target<*mid) {//目标是在前面吗
                ed=mid;//缩小上界
            }
            else be=mid+1;//目标在后面,缩小下界
            mid=be+(ed-be)/2;//重新计算新的中值
        }
        if(*mid==target)
            return mid-nums.begin();
        return -1;
    }
};

反思:1、二分查找一定要边界定准确

posted @ 2018-09-19 15:06  Kipper  阅读(94)  评论(0)    收藏  举报