应用折半查找方法在一个降序序列中查找值为k的元素。若查找成功,返回元素 k 在序列中的位置,若查找失败,返回失败信息 c语言
时间: 2024-03-11 13:50:33 浏览: 59
好的,以下是在一个降序序列中查找值为k的元素的C语言实现,使用折半查找方法:
```c
#include <stdio.h>
int binary_search(int a[], int n, int k) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
int mid_value = a[mid];
if (mid_value == k) {
return mid;
} else if (mid_value > k) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 查找失败
}
int main() {
int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int n = sizeof(a) / sizeof(a[0]);
int k = 4;
int pos = binary_search(a, n, k);
if (pos == -1) {
printf("查找失败\n");
} else {
printf("元素 %d 在序列中的位置是 %d\n", k, pos);
}
return 0;
}
```
这个程序中,我们首先定义了一个数组 a,然后使用 sizeof(a) / sizeof(a[0]) 计算出数组的长度 n。我们要查找的元素 k 是 4。折半查找方法在函数 binary_search 中实现,返回元素 k 在序列中的位置,如果查找失败则返回 -1。在 main 函数中,我们调用 binary_search 函数,将结果保存在变量 pos 中,然后根据 pos 的值输出相应的信息。
阅读全文