c++二分法查找有序序列中第一个小于等于于目标值的位置
时间: 2024-10-04 10:04:39 浏览: 43
二分法查找(c++版)
4星 · 用户满意度95%
二分查找(Binary Search),也叫折半查找,是一种在有序数组中搜索特定元素的高效算法。在C++中,它的基本思想是从数组中间开始,如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分查找,直到找到目标值或搜索范围为空。
下面是二分查找在一个有序整数数组`arr`中找到第一个小于等于`target`的元素的C++伪代码:
```cpp
int binarySearchFirstSmallerThan(int arr[], int n, int target) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
// 如果mid大于目标值,说明第一个小于等于target的元素在mid的左边
if (arr[mid] > target)
right = mid - 1;
// 否则,如果mid不大于或等于target,那么我们继续在mid右边找
else
left = mid + 1;
}
// 返回第一个小于等于target的元素索引(注意不是target)
return left;
}
```
阅读全文