使用C++写一个二分查找
时间: 2024-05-14 08:06:50 浏览: 8
算法。
好的,二分查找算法是一种常用的查找算法,可以用来在有序数组中快速定位目标元素。首先将数组按照升序或降序排列,然后取数组中间的值与目标元素进行比较,如果相等则返回该位置,如果目标元素比中间值小,则在前半部分继续查找,如果目标元素比中间值大,则在后半部分继续查找,直到找到目标元素或查找完整个数组。
相关问题
使用c++写一个二分查找
好的,以下是使用 C 语言编写的二分查找算法:
```c
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x) {
if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}
int main() {
int arr[] = {2, 4, 6, 8, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 8;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? printf("Element is not present in array")
: printf("Element is present at index %d", result);
return 0;
}
```
以上代码实现了二分查找算法,其中将要查找的数存储在变量 `x` 中,数组存储在 `arr` 中,`n` 变量表示数组中的元素个数。程序运行后,将输出查找结果,如果查找的数不存在于数组中,则输出 "Element is not present in array",否则输出 "Element is present at index n",其中 n 是查找到的数字在数组中的下标。
用c++写一个二分查找
好的,下面是一个简单的二分查找的 C++ 实现:
```c++
#include <iostream>
using namespace std;
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) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(int);
int target = 6;
int result = binarySearch(arr, n, target);
if (result == -1) {
cout << "Element not found." << endl;
} else {
cout << "Element found at index: " << result << endl;
}
return 0;
}
```
该程序首先定义了一个 `binarySearch` 函数,它接受一个数组、数组的长度和要查找的目标值作为参数。函数通过维护左右指针的方式来实现二分查找,最终返回目标值在数组中的下标。如果目标值不存在,则返回 -1。
在 `main` 函数中,我们定义了一个整型数组和目标值,然后调用 `binarySearch` 函数进行查找。最终输出查找结果。
希望这个简单的示例能够帮助你理解二分查找的实现方式。