//求第一个等于target的数值
void er_diyidengyu(vector<int>& nums, int target)
{
int len = nums.size();
int low = 0;
int high = len-1;
int mid;
while (low < high)
{
mid = (low + high) / 2;
if (nums[mid] < target)
{
low = mid + 1;
}
else
high = mid;
}
if (low != len&&nums[low] == target)
cout << "没有" << nums[low] << endl;
cout << low << endl;
}
//求最后一个小于或者等于target的数值
void er_zuihoudengyu(vector<int>& nums, int target)
{
int len = nums.size();
int low = 0;
int high = len-1;
int mid;
while (low < high)
{
mid = (low + high+1) / 2;//偏向右边的
if (nums[mid] <= target)
{
low = mid;
}
else
high = mid-1;
}
if (low != len&&nums[low] == target)
cout << "没有" << nums[low] << endl;
cout << low << endl;
}
二分查找变种
最新推荐文章于 2021-08-05 15:06:45 发布