C++二分的大框架
C++中进行二分查找的大框架如下:
-
确定搜索区间的上界和下界。一般情况下,上界为数组的长度减一,下界为0。
-
使用一个循环来不断缩小搜索范围,直到找到目标值或者搜索范围为空。
-
在循环中,计算出搜索范围的中间位置mid,可以使用以下公式计算:mid = (low + high) / 2。
-
判断中间位置的元素与目标值的关系,如果中间位置的元素等于目标值,则找到了目标值,返回结果;如果中间位置的元素大于目标值,则目标值在左半部分,将搜索范围的上界更新为mid-1;如果中间位置的元素小于目标值,则目标值在右半部分,将搜索范围的下界更新为mid+1。
-
如果循环结束时仍然没有找到目标值,则返回不存在的结果。
下面是一个具体的示例代码:
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
原文地址: https://www.cveoy.top/t/topic/hVZv 著作权归作者所有。请勿转载和采集!