二进制搜索是一种常见的值列表搜索方法。要使二进制搜索工作,数组中的元素必须已经排序。假设数组按升序排列。二进制搜索首先将键与数组中间的元素进行比较。 考虑以下三种情况: ■ 如果关键字小于中间元素,则只需要在数组的前半部分继续搜索关键字。 ■ 如果关键字等于中间元素,则搜索以匹配结束。 ■ 如果关键字大于中间元素,则只需要在数组的后半部分继续搜索关键字。 使用C语言实现二进制搜索,并编写一个程序来测试它是否可以工作。
时间: 2023-12-06 20:44:40 浏览: 96
以下是使用C语言实现二进制搜索的代码示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int size, int target) {
int left = 0;
int right = size - 1;
while(left <= right) {
int mid = (left + right) / 2;
if(arr[mid] == target) {
return mid;
}
else if(arr[mid] < target) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1; // 如果未找到,返回-1
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 7;
int result = binarySearch(arr, size, target);
if(result != -1) {
printf("找到了,位置是%d\n", result);
}
else {
printf("未找到\n");
}
return 0;
}
```
程序首先定义了一个名为`binarySearch`的函数来执行二进制搜索。该函数接受三个参数:要搜索的数组、数组大小和要查找的目标值。它返回目标值在数组中的索引,如果未找到,则返回-1。
程序还包括一个示例测试`binarySearch`函数的`main`函数。它使用一个已排序的整数数组来测试二进制搜索。在这个例子中,目标值为7,因此预期输出应该是“找到了,位置是3”。
阅读全文