二分法 C语言
时间: 2023-07-24 18:06:47 浏览: 118
二分法c语言
二分法也叫折半查找,是一种常用的查找算法,它的时间复杂度为 O(log n)。以下是使用 C 语言实现的二分查找算法:
```c
#include <stdio.h>
int binary_search(int arr[], int l, int r, int x) {
if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binary_search(arr, l, mid - 1, x);
return binary_search(arr, mid + 1, r, x);
}
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
```
在上面的代码中,`binary_search()` 函数接收一个已排序的数组、数组的左下标、右下标和需要查找的元素。该函数首先检查中间元素是否等于需要查找的元素,如果是,则返回该元素的索引;如果不是,则根据需要查找的元素是在左半边还是右半边递归调用 `binary_search()` 函数。如果没有找到需要查找的元素,则返回 `-1`。在 `main()` 函数中,我们测试了在数组 `{2, 3, 4, 10, 40}` 中查找元素 `10` 的结果。
阅读全文