C++中进行二分查找的大框架如下:

  1. 确定搜索区间的上界和下界。一般情况下,上界为数组的长度减一,下界为0。

  2. 使用一个循环来不断缩小搜索范围,直到找到目标值或者搜索范围为空。

  3. 在循环中,计算出搜索范围的中间位置mid,可以使用以下公式计算:mid = (low + high) / 2。

  4. 判断中间位置的元素与目标值的关系,如果中间位置的元素等于目标值,则找到了目标值,返回结果;如果中间位置的元素大于目标值,则目标值在左半部分,将搜索范围的上界更新为mid-1;如果中间位置的元素小于目标值,则目标值在右半部分,将搜索范围的下界更新为mid+1。

  5. 如果循环结束时仍然没有找到目标值,则返回不存在的结果。

下面是一个具体的示例代码:

int binarySearch(vector<int>& nums, int target) {
    int low = 0;
    int high = nums.size() - 1;

    while (low <= high) {
        int mid = (low + high) / 2;
        if (nums[mid] == target) {
            return mid;
        } else if (nums[mid] > target) {
            high = mid - 1;
        } else {
            low = mid + 1;
        }
    }

    return -1; // 目标值不存在
}

这个示例代码假设输入的nums是一个已经有序的数组,如果数组中存在目标值target,则返回目标值的索引,否则返回-1

C++二分的大框架

原文地址: https://www.cveoy.top/t/topic/hVZv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录