用c语言给定一个有序表或从键盘上输入一组有序的序列,用折半查找方法查找出某个数是否存在,如果存在,请给出其在有序表中的位置,否则给出查找不成功的提示。
时间: 2024-04-30 20:21:40 浏览: 48
以下是折半查找方法的C语言实现:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1; // 没有找到
}
int main() {
int arr[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(int);
int x = 7;
int pos = binary_search(arr, n, x);
if (pos != -1)
printf("%d 在有序表中的位置是 %d\n", x, pos);
else
printf("查找不成功\n");
return 0;
}
```
在上面的例子中,我们给定了一个有序表 `arr`,然后使用 `binary_search` 函数来查找值为 `x` 的元素。如果查找成功,则返回元素在有序表中的下标;否则返回 -1 表示查找不成功。
你可以根据需要修改 `arr`,`n` 和 `x` 的值来进行测试。如果你想从键盘上输入一组有序的序列,可以使用 `scanf` 函数来读取输入。
阅读全文