c语言编程实现折半查找算法。
时间: 2023-11-30 13:55:05 浏览: 77
折半查找算法,也称为二分查找算法,是一种基于有序数组的查找算法。它的基本思想是:将待查找的元素与中间位置的元素进行比较,如果相等,则查找成功;如果待查找元素小于中间位置的元素,则在数组的左半部分继续查找;如果待查找元素大于中间位置的元素,则在数组的右半部分继续查找。
下面是使用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 - left) / 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[] = {1, 3, 5, 7, 9, 11};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int index = binary_search(arr, n, target);
if (index == -1) {
printf("找不到目标元素\n");
} else {
printf("目标元素在数组中的下标是 %d\n", index);
}
return 0;
}
```
上面的代码中,`binary_search` 函数接收三个参数:一个有序数组 `arr`,数组的大小 `n`,以及待查找的目标元素 `target`。函数返回目标元素在数组中的下标,如果找不到则返回 `-1`。在函数内部,使用 `left` 和 `right` 两个指针指向数组的左右两端,然后不断计算中间元素的下标 `mid`,并与目标元素进行比较。如果相等,则查找成功;如果小于目标元素,则在右半部分继续查找;如果大于目标元素,则在左半部分继续查找。最终,如果没有找到目标元素,则返回 `-1`。在 `main` 函数中,我们使用示例数组 `{1, 3, 5, 7, 9, 11}` 进行查找,目标元素为 `5`,输出结果为 `目标元素在数组中的下标是 2`。
阅读全文