c语言设计程序,在关键字有序序列中采用二分查找法查找关键字为给定值k的元素,输出查找结果。 要求:有序序列和给定值k都从键盘输入。
时间: 2024-02-21 10:00:04 浏览: 31
好的,这是一个很典型的二分查找问题。以下是C语言的代码实现:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int k) {
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == k) {
return mid;
} else if (arr[mid] > k) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int n, k, i;
printf("请输入有序序列的长度:");
scanf("%d", &n);
int arr[n];
printf("请输入有序序列:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("请输入要查找的关键字:");
scanf("%d", &k);
int result = binarySearch(arr, n, k);
if (result == -1) {
printf("未找到该元素\n");
} else {
printf("该元素在序列中的下标为%d\n", result);
}
return 0;
}
```
程序中定义了一个函数 `binarySearch`,用于实现二分查找,接收三个参数:有序序列数组 `arr`、数组长度 `n` 和要查找的关键字 `k`。在主函数中,首先从键盘输入有序序列的长度和序列元素,再输入要查找的关键字,最后调用 `binarySearch` 函数进行查找,并输出查找结果。
希望能够帮到你!