C语言实现二分查找
时间: 2023-07-18 13:03:00 浏览: 49
下面是一个简单的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; //如果找不到目标元素,则返回-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("元素 %d 不存在于数组中", x);
else
printf("元素 %d 在数组中的下标为 %d", x, result);
return 0;
}
```
在这个示例中,我们定义了一个 `binarySearch` 函数,它接受一个已排序的整数数组,查找范围的左端点和右端点,以及要查找的目标元素。该函数使用一个循环来不断缩小查找范围,直到找到目标元素或者查找范围为空。如果找到了目标元素,则返回其下标;否则,返回-1表示找不到该元素。
在 `main` 函数中,我们定义了一个整数数组 `arr`,并调用了 `binarySearch` 函数来查找元素10在数组中的下标。最后,根据函数的返回值,我们打印了相应的结果。