实现二分查找算法 c
时间: 2023-07-24 14:16:35 浏览: 57
下面是一个使用二分查找算法在 C 语言中查找给定元素的示例代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int x) {
int left = 0, right = n - 1;
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, n, x);
if (result == -1)
printf("元素不在数组中");
else
printf("元素在数组中的索引:%d", result);
return 0;
}
```
在上面的示例代码中,我们首先定义了一个 `binarySearch` 函数,用于在给定数组中查找指定元素。这个函数接受三个参数:要查找的数组 `arr`、数组的长度 `n`、要查找的元素 `x`。
函数中使用了一个循环来不断地缩小查找范围。循环条件是 `left <= right`,即只要左边的索引小于等于右边的索引,就继续查找。在每次循环中,我们先计算出中间元素的索引 `mid`,然后判断这个中间元素是否等于要查找的元素。如果相等,直接返回中间元素的索引;如果中间元素小于要查找的元素,则继续在右边的子数组中查找;否则,在左边的子数组中查找。
最后,我们在 `main` 函数中定义了一个数组 `arr`,然后调用 `binarySearch` 函数来查找元素 `10` 在数组中的索引。如果函数返回 `-1`,则表示元素不在数组中;否则,返回的就是元素在数组中的索引。