写一个二分查找查找第一个符合条件的位置的C++代码
时间: 2023-04-07 08:05:11 浏览: 60
好的,以下是二分查找查找第一个符合条件的位置的C代码:
```
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] >= target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return left < n ? left : -1;
}
```
这个函数接受一个整数数组、数组长度和目标值作为参数,返回第一个大于或等于目标值的元素的下标。如果没有符合条件的元素,则返回-1。
相关问题
C++ 二分查找代码
当然!以下是一个示例的二分查找代码:
```python
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
```
以上代码使用了一个循环来进行二分查找。它接受一个已排序的数组 `arr` 和一个目标值 `target`。开始时,将 `low` 设置为数组的第一个元素的索引,将 `high` 设置为数组的最后一个元素的索引。
在每次循环中,它计算 `mid` 索引的值,并与目标值进行比较。如果相等,表示找到了目标值,返回 `mid` 索引。如果 `arr[mid]` 小于 `target`,则将 `low` 更新为 `mid+1`,否则将 `high` 更新为 `mid-1`。
如果循环结束时仍然没有找到目标值,则返回 -1 表示未找到。
请注意,此代码假设输入的数组已经按升序排序。如果数组没有排序,或者排序顺序不正确,那么此代码将无法正常工作。
写一个c++的二分法查找
下面是一个简单的 C++ 代码实现二分法查找:
```C++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int index = binarySearch(arr, n, target);
if (index != -1) {
cout << "Target found at index: " << index << endl;
} else {
cout << "Target not found" << endl;
}
return 0;
}
```
在这个例子中,我们定义了一个 `binarySearch` 函数来执行二分搜索。函数接受三个参数:一个整数数组 `arr`,数组的大小 `n` 和要搜索的目标值 `target`。函数返回目标值在数组中的索引,如果目标值不存在,则返回 -1。
在二分搜索中,我们首先定义左右指针并将它们初始化为数组的第一个和最后一个元素的索引。然后,我们从数组的中间开始搜索,将中间元素与目标值进行比较。如果中间元素等于目标值,则返回该元素的索引。如果中间元素大于目标值,则我们在左半部分继续搜索。否则,我们在右半部分继续搜索。
我们不断重复这个过程,直到找到目标值或者确定它不存在为止。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)