在C语言中编程实现使用二分法查找x,找到则输出位置否则输出负一
时间: 2024-12-23 07:13:03 浏览: 22
在C语言中,我们可以使用二分查找算法(Binary Search)来寻找特定值`x`在一个有序数组中的索引。以下是简单的步骤:
```c
#include <stdio.h>
// 二分查找函数
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;
// 如果中间元素大于目标值,向左半部分查找
else if (arr[mid] > x)
return binarySearch(arr, left, mid - 1, x);
// 否则向右半部分查找
else
return binarySearch(arr, mid + 1, right, x);
}
// 找不到目标值,返回 -1
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11}; // 示例数组,已排序
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7; // 要查找的值
int result = binarySearch(arr, 0, n - 1, x);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found, returning -1\n");
return 0;
}
```
在这个示例中,我们首先检查`left`和`right`边界是否交叉(即`right >= left`),然后取中间位置`mid`。如果`arr[mid]`等于目标值`x`,我们就找到了并返回索引;如果不等,则根据大小关系分别向左或向右继续查找,直到找到或者搜索范围缩小到空集。如果没有找到,最后返回-1表示未找到。
阅读全文