如何用C语言实现折半查找算法并提供一个示例?
时间: 2024-12-16 09:32:56 浏览: 44
折半查找算法,也叫二分查找,是一种在有序数组中寻找特定元素的高效搜索算法。它的基本思想是每次将查找区间缩小一半。以下是使用C语言实现的基本步骤:
1. 定义函数`binary_search()`,接收一个排序后的整数数组`arr`、数组长度`n`以及要查找的目标值`target`。
```c
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int low = 0;
int high = n - 1;
while (low <= high) {
int mid = low + (high - low) / 2; // 计算中间索引
if (arr[mid] == target) {
return mid; // 找到目标,返回其索引
} else if (arr[mid] < target) {
low = mid + 1; // 目标大于中间元素,往右半部分找
} else {
high = mid - 1; // 目标小于中间元素,往左半部分找
}
}
return -1; // 如果没找到,返回-1表示不在数组内
}
```
2. 测试函数:
```c
int main() {
int array[] = {1, 3, 5, 7, 9, 11, 13};
int n = sizeof(array) / sizeof(array[0]);
int target = 7;
int result = binary_search(array, n, target);
if (result != -1)
printf("元素 %d 的索引为:%d\n", target, result);
else
printf("%d 不在数组中。\n", target);
return 0;
}
```
在这个示例中,如果输入的目标值是7,函数会返回4,因为7在数组中的索引是4。如果没有找到,则返回-1。
阅读全文