C 语言写一个二分法
时间: 2023-07-20 18:14:01 浏览: 101
c语言二分法
以下是一个用 C 语言实现二分法的示例代码:
```
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int x);
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 5;
int result = binarySearch(arr, 0, n - 1, x);
if(result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", result);
}
return 0;
}
int binarySearch(int arr[], int left, int right, int x) {
if(right >= left) {
int mid = left + (right - left) / 2;
if(arr[mid] == x) {
return mid;
}
if(arr[mid] > x) {
return binarySearch(arr, left, mid - 1, x);
}
return binarySearch(arr, mid + 1, right, x);
}
return -1;
}
```
在上面的代码中,我们定义了一个名为 `binarySearch` 的函数,用于实现二分法查找。在 `main` 函数中,我们首先定义了一个包含十个元素的有序数组 `arr`,并定义要查找的元素 `x`。接着,我们调用 `binarySearch` 函数进行查找,并将返回值存储在 `result` 变量中。最后,我们根据 `result` 的值输出查找结果。
在 `binarySearch` 函数中,我们首先检查右边界是否大于等于左边界。如果是,则计算出中间位置 `mid`,并检查该位置的值是否等于要查找的值 `x`。如果是,则返回 `mid`。如果不是,则根据 `arr[mid]` 与 `x` 的大小关系递归调用 `binarySearch` 函数,在左半边或右半边继续查找。如果右边界小于左边界,则返回 `-1`,表示未找到要查找的元素。
需要注意的是,上面的代码仅适用于有序数组的二分查找,对于无序数组等情况需要根据实际需求进行修改。同时,在使用二分法时,需要确保数据是按照一定的顺序排列好的。
阅读全文