请根据以下内容写出可以执行的代码:二分法查找返回关键值key在长度为len的数组arr[]中的位置,没有key则返回-1 int bi_search(int key,int arr[],int len)
时间: 2024-09-10 12:22:47 浏览: 38
C++二分法在数组中查找关键字的方法
5星 · 资源好评率100%
以下是使用二分查找算法的`bi_search`函数的C语言实现代码:
```c
#include <stdio.h>
int bi_search(int key, int arr[], int len) {
int low = 0;
int high = len - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == key) {
return mid; // 找到key,返回位置索引
} else if (arr[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1; // 未找到key,返回-1
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17};
int len = sizeof(arr) / sizeof(arr[0]);
int key = 9;
int position = bi_search(key, arr, len);
if (position != -1) {
printf("找到关键值 %d 在数组中的位置:%d\n", key, position);
} else {
printf("在数组中未找到关键值 %d\n", key);
}
return 0;
}
```
这段代码定义了一个`bi_search`函数,它使用二分查找算法来寻找一个关键值`key`在数组`arr[]`中的位置。如果找到了`key`,就返回它在数组中的索引位置;如果没有找到,则返回`-1`。在`main`函数中,我们创建了一个数组并调用`bi_search`函数来测试其功能。
阅读全文