c语言假设有一组无序关键字序列(39,11,68,46,75,23,71,8,86,34],请设计折半查找算法查找某一关
时间: 2024-03-02 08:54:34 浏览: 90
C语言实现折半查找算法
4星 · 用户满意度95%
键字是否在该序列中,并给出相应的C语言代码实现。
折半查找算法的基本思想是:先将查找区间的中间位置作为比较对象,将待查关键字与该位置的关键字进行比较,如果相等则查找成功;否则根据待查关键字与中间位置关键字的大小关系,将查找区间缩小一半,并继续进行查找,直到查找成功或者区间缩小为0。
以下是实现折半查找算法的C语言代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {39, 11, 68, 46, 75, 23, 71, 8, 86, 34};
int n = sizeof(arr) / sizeof(int);
int target = 46;
int index = binary_search(arr, n, target);
if (index >= 0) {
printf("Found at index %d\n", index);
} else {
printf("Not found\n");
}
return 0;
}
```
在上述代码中,`binary_search` 函数接受一个整型数组 `arr`,数组长度 `n` 和待查找的关键字 `target`,返回该关键字在数组中的下标(从0开始),如果找不到则返回 `-1`。在主函数中,我们将待查找的关键字设为 `46`,并调用 `binary_search` 函数进行查找。如果返回值大于等于0,则说明查找成功,打印出该关键字在数组中的下标;否则说明查找失败,打印出提示信息。
阅读全文