用C语言写一个二分查找
时间: 2023-05-28 17:06:43 浏览: 65
以下是一个使用C语言实现的二分查找的示例代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 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[] = {1, 3, 5, 7, 9, 11, 13};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int index = binary_search(arr, n, x);
if (index == -1) {
printf("元素 %d 不在数组中\n", x);
} else {
printf("元素 %d 在数组中的下标为 %d\n", x, index);
}
return 0;
}
```
在这个例子中,我们使用了一个`binary_search`函数来实现二分查找。该函数接收一个整数数组、数组长度和要查找的元素作为参数,并返回该元素在数组中的下标(如果找到)或-1(如果未找到)。函数的实现使用了一个`while`循环和两个指针`left`和`right`。在每次循环迭代中,我们计算中间元素的下标`mid`,并将其与要查找的元素进行比较。如果它们相等,则我们返回`mid`。否则,如果中间元素小于要查找的元素,则我们将`left`指针移动到`mid+1`的位置,否则将`right`指针移动到`mid-1`的位置。如果我们在循环结束时仍然没有找到元素,则返回-1。最后,在`main`函数中,我们定义了一个整数数组`arr`、数组长度`n`和要查找的元素`x`,并使用`binary_search`函数来查找该元素。如果该元素不在数组中,则输出一条消息,否则输出该元素在数组中的下标。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)