常见算法--二分法

二分法

int findtar(vector<int>& nums, int tar)
{
  int l = 0;
  int r = nums.size() - 1;
  while (l <= r)//需要有等于,否则会漏掉这个数
  {
    int mid = l + (r - l) / 2;
    if (tar < nums[mid]) {
      r = mid - 1;
    }
    else if (nums[mid] < tar)
    {
      l = mid + 1;
    }
    else
    {
      return mid;//找到就直接返回
    }
  }

  return -1;
}

你可能感兴趣的:(算法,c++,数据结构)