如何用C语言实现折半查找算法?
时间: 2025-01-28 16:15:38 浏览: 40
折半查找算法(Binary Search)是一种高效的查找算法,它要求被查找的数组必须是有序的。折半查找的基本思想是将查找范围分成两半,比较目标值与中间值的大小,根据比较结果决定下一步的查找范围。
以下是使用C语言实现折半查找算法的示例代码:
```c
#include <stdio.h>
// 折半查找函数
int binarySearch(int arr[], int size, int target) {
int left = 0; // 查找范围的左边界
int right = size - 1; // 查找范围的右边界
while (left <= right) {
int mid = left + (right - left) / 2; // 计算中间位置,避免(left + right) / 2可能导致的整数溢出
if (arr[mid] == target) {
return mid; // 找到目标值,返回索引
} else if (arr[mid] < target) {
left = mid + 1; // 目标值在右半部分,调整左边界
} else {
right = mid - 1; // 目标值在左半部分,调整右边界
}
}
return -1; // 未找到目标值,返回-1
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 14;
int result = binarySearch(arr, size, target);
if (result != -1) {
printf("元素 %d 在数组中的索引位置为 %d\n", target, result);
} else {
printf("元素 %d 不存在于数组中\n", target);
}
return 0;
}
```
在这个示例中,`binarySearch`函数接受一个整数数组`arr`,数组的大小`size`以及要查找的目标值`target`。函数返回目标值在数组中的索引位置,如果未找到则返回-1。
阅读全文
相关推荐

















