二分查找C语言
时间: 2023-07-02 08:04:18 浏览: 91
二分查找(Binary Search)是一种高效的查找算法,它要求在有序的数据集合中进行查找。下面是一个简单的C语言实现:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int x) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x) {
return mid;
}
else if (arr[mid] < x) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1) {
printf("Element not found\n");
}
else {
printf("Element found at index %d\n", result);
}
return 0;
}
```
该代码首先定义了一个名为`binarySearch`的函数,该函数接受四个参数:数组`arr`、左端点`left`、右端点`right`和要查找的元素`x`。函数返回要查找元素的下标,如果未找到则返回-1。
函数的实现中使用了一个while循环,在循环中计算中间点`mid`,如果该点处的元素等于`x`,则返回该点的下标。如果该点处的元素小于`x`,则在右半部分继续查找;否则在左半部分继续查找。如果整个循环结束后还没有找到元素,则返回-1。
在主函数中,定义了一个数组`arr`,并计算出其大小。接着定义要查找的元素`x`,并调用`binarySearch`函数进行查找。最后根据函数返回值判断是否找到元素,并输出结果。
阅读全文