C编写函数 downsearch(v, n, key),在一个长度为 n、降序排列的整型数组 v 中使用折半查找方法查找特殊值 key。若找到,返回其对应的数组下标;未找到,返回 -1。
时间: 2024-10-24 09:04:46 浏览: 22
JavaScript使用二分查找算法在数组中查找数据的方法
在C语言中,你可以通过以下步骤编写一个名为`downsearch`的函数来实现折半查找(也称为二分查找)。这个函数接收三个参数:一个已排序的整数数组`v`,数组的大小`n`,以及你要查找的目标值`key`。下面是一个简单的函数实现:
```c
#include <stdio.h>
// 定义函数原型,声明返回值类型和参数
int downsearch(int v[], int n, int key);
// 函数主体
int downsearch(int v[], int n, int key) {
int low = 0; // 低索引
int high = n - 1; // 高索引
while (low <= high) { // 只要搜索范围还有元素
int mid = (low + high) / 2; // 计算中间位置
if (v[mid] == key) { // 如果中间元素等于目标值
return mid; // 返回中间位置作为键的索引
} else if (v[mid] > key) { // 如果中间元素大于目标值
high = mid - 1; // 更新高索引到中间偏左
} else { // 如果中间元素小于目标值
low = mid + 1; // 更新低索引到中间偏右
}
}
// 没有找到目标值,返回-1
return -1;
}
int main() {
int v[] = {5, 7, 9, 11, 13}; // 示例数组
int n = sizeof(v) / sizeof(v[0]);
int key = 11;
int result = downsearch(v, n, key);
if (result != -1)
printf("找到了,索引: %d\n", result);
else
printf("没找到,插入位置: %d\n", result);
return 0;
}
```
阅读全文