c语言二分查找法实例代码
时间: 2025-05-29 08:03:05 浏览: 16
### C语言二分查找法示例代码
以下是基于已有引用内容整理并完善的C语言实现二分查找法的完整代码:
```c
#include <stdio.h>
// 定义二分查找函数
int binarySearch(int arr[], int n, int x) {
int left = 0;
int right = n - 1;
while (left <= right) {
// 计算中间位置,防止溢出
int mid = left + (right - left) / 2;
// 判断目标值是否等于中间值
if (arr[mid] == x) {
return mid; // 找到目标值,返回其索引
}
// 若目标值大于中间值,则忽略左半部分
if (arr[mid] < x) {
left = mid + 1;
}
// 否则忽略右半部分
else {
right = mid - 1;
}
}
// 如果循环结束仍未找到目标值,返回-1表示未找到
return -1;
}
// 主程序测试二分查找功能
int main() {
// 初始化一个有序数组
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]); // 获取数组长度
int x = 5; // 设定要查找的目标值
// 调用二分查找函数
int result = binarySearch(arr, n, x);
// 输出查找结果
if (result == -1) {
printf("元素不存在\n");
} else {
printf("元素的索引:%d\n", result);
}
return 0;
}
```
#### 代码解析
上述代码实现了标准的二分查找逻辑[^4]。
1. **初始化边界变量**:`left` 和 `right` 分别代表当前搜索范围的起始和终止位置。
2. **计算中间位置**:通过 `(left + right) / 2` 或更安全的方式 `left + (right - left) / 2` 来获取中间索引,避免整型溢出问题[^1]。
3. **比较与调整区间**:
- 当 `arr[mid] < x` 时,说明目标值位于右侧子数组,因此更新 `left = mid + 1`。
- 当 `arr[mid] > x` 时,说明目标值位于左侧子数组,因此更新 `right = mid - 1`。
4. **返回结果**:如果找到目标值,返回对应的索引;否则返回 `-1` 表示未找到。
此代码适用于任何已排序的整型数组,并能高效完成查找操作。
---
阅读全文
相关推荐

















