c 编写函数 downsearch(v, n, key),在一个长度为 n、降序排列的整型数组 v 中使用折半查找方法查找特殊值 key。若找到,返回其对应的数组下标;未找到,返回 -1。
时间: 2024-10-18 16:21:06 浏览: 33
在C语言中,你可以编写一个名为`downsearch`的函数,采用二分查找算法(也称折半查找法)来实现对降序整数数组的搜索。以下是该函数的基本结构:
```c
#include <stdio.h>
int downsearch(int v[], int n, int key) {
int low = 0;
int high = n - 1;
// 当数组范围非空时继续查找
while (low <= high) {
int mid = (low + high) / 2; // 计算中间索引
// 如果key小于中间元素,则在左半部分继续查找
if (v[mid] > key) {
high = mid - 1;
}
// 如果key大于等于中间元素,则在右半部分查找
else if (v[mid] <= key) {
low = mid + 1;
}
// 如果找到相等的元素,返回其下标
else {
return mid;
}
}
// 没有找到key,返回-1
return -1;
}
// 示例
int main() {
int v[] = {10, 20, 30, 40, 50};
int n = sizeof(v) / sizeof(v[0]);
int key = 30;
int result = downsearch(v, n, key);
if (result != -1)
printf("Key found at index %d\n", result);
else
printf("Key not found in the array.\n");
return 0;
}
```
阅读全文