C语言:用二分查找法在一组数中查找指定的数。
时间: 2023-07-19 16:16:04 浏览: 104
C语言二分查找法
二分查找法(也叫折半查找)是一种高效的查找算法,其时间复杂度为O(log n)。下面是使用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-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, 5, 8, 12, 16, 23, 38, 56, 72, 91};
int n = sizeof(arr)/sizeof(arr[0]);
int x = 23; // 要查找的数
int result = binary_search(arr, n, x);
if (result == -1)
printf("Element not found\n");
else
printf("Element found at index %d\n", result);
return 0;
}
```
在上面的代码中,`binary_search`函数接受三个参数:需要查找的数组`arr`、数组长度`n`和要查找的数`x`。函数返回值为要查找的数在数组中的下标,如果没有找到则返回-1。在`main`函数中,我们声明一个有序的整数数组,然后使用`binary_search`函数查找23这个数在数组中的位置。最后,根据函数返回值输出查找结果。
需要注意的是,二分查找算法只适用于已经排好序的数组。如果数组中的元素没有排序,则需要先进行排序才能使用二分查找算法。
阅读全文