能否提供一个用C语言实现的折半查找算法的具体代码示例?
时间: 2024-11-22 07:37:02 浏览: 22
c代码-折半查找1
当然可以。折半查找,也称为二分查找,是一种在有序数组中查找特定元素的搜索算法。以下是使用C语言实现的一个简单示例:
```c
#include <stdio.h>
// 定义一个函数来进行折半查找
int binarySearch(int arr[], int low, int high, int target) {
while (low <= high) {
// 计算中间索引
int mid = (low + high) / 2;
// 如果目标值等于中间值,返回索引
if (arr[mid] == target)
return mid;
// 如果目标值小于中间值,更新高限到左半部分
else if (arr[mid] > target)
high = mid - 1;
// 否则,更新低限到右半部分
else
low = mid + 1;
}
// 没有找到目标,返回-1表示不在数组中
return -1;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5; // 要查找的值
int result = binarySearch(arr, 0, n - 1, target);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array.\n");
return 0;
}
```
在这个例子中,`binarySearch`函数接受一个排序后的整数数组、数组的起始索引 `low`、结束索引 `high` 和要查找的目标值 `target`。它通过不断将搜索范围缩小一半,直到找到目标值或者搜索范围为空。
阅读全文