用c语言编程实现:利用折半查找算法实现,在数据序列{1,6,8,16,36,66,88,100}中分别查找关键字8和56,找到后输出位序,找不到输出相应提示信息
时间: 2023-10-02 10:07:06 浏览: 118
下面是用C语言实现的代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int key)
{
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main()
{
int arr[] = {1, 6, 8, 16, 36, 66, 88, 100};
int n = sizeof(arr) / sizeof(arr[0]);
int key1 = 8, key2 = 56;
int pos1 = binary_search(arr, n, key1);
int pos2 = binary_search(arr, n, key2);
if (pos1 != -1) {
printf("8在数组中的位置是:%d\n", pos1);
} else {
printf("找不到关键字8\n");
}
if (pos2 != -1) {
printf("56在数组中的位置是:%d\n", pos2);
} else {
printf("找不到关键字56\n");
}
return 0;
}
```
运行结果:
```
8在数组中的位置是:2
找不到关键字56
```
代码解释:
`binary_search()` 函数实现了折半查找算法,其中 `arr` 是待查找的数组,`n` 是数组元素个数,`key` 是要查找的关键字。函数返回值是关键字在数组中的位置,如果找不到则返回 -1。
`main()` 函数中首先定义了待查找的数组 `arr` 和数组元素个数 `n`,然后分别调用 `binary_search()` 函数查找关键字 8 和 56 的位置,并将结果保存在 `pos1` 和 `pos2` 变量中。
最后根据 `pos1` 和 `pos2` 的值输出相应的提示信息。如果找到了关键字,则输出关键字在数组中的位置;如果找不到,则输出相应的提示信息。
阅读全文