二分查找法变形三

输入一个数组和要查找的数据,在数组中找到大于等于该数的第一个数及其位置

实现步骤:

  1. 定义一个低指针low,初始化为数组的第一个索引。
  2. 定义一个高指针high,初始化为数组的最后一个索引。
  3. 计算中间指针mid,如果mid对应的数大于等于目标数,则high=mid-1,否则low=mid+1
  4. 继续缩小范围,直到找到目标值的位置或确认没有匹配项。

示例代码:

function [result, position] = bearch_change03(arr, target)
    low = 1;
    high = length(arr);
    result = -1;
    position = -1;
    while low <= high
        mid = floor((low + high) / 2);
        if arr(mid) >= target
            result = arr(mid);
            position = mid;
            high = mid - 1;
        else
            low = mid + 1;
        end
    end
end

该算法通过调整搜索范围,最终找到大于等于目标值的第一个元素及其对应位置。