实现顺序表上的折半查找使用C语言
时间: 2024-09-29 22:14:54 浏览: 32
顺序查找和折半查找(C语言)
在C语言中实现顺序表(数组)上的折半查找(也称为二分查找),通常适用于数据已经排序的情况。这种方法的基本思想是每次比较中间元素与目标值,然后根据比较结果将搜索范围缩小一半。以下是步骤:
1. 定义一个函数,比如 `binary_search`,接受顺序表的头指针、长度、以及要查找的目标值作为参数。
2. 初始化两个指针,`low` 和 `high`,分别指向数组的第一个元素和最后一个元素的下一个位置(因为二分查找不会检查第一个元素)。
3. 当 `low` 小于等于 `high` 时,继续循环:
a. 计算中间索引 `mid`,即 `(low + high) / 2`,向下取整。
b. 比较中间元素的值和目标值:
- 如果中间元素等于目标值,返回中间索引。
- 如果中间元素小于目标值,说明目标值在中间元素的右侧,更新 `low` 为 `mid + 1`。
- 否则,目标值在中间元素的左侧,更新 `high` 为 `mid - 1`。
4. 如果循环结束仍未找到目标值,说明目标值不存在于列表中,返回 `-1`。
```c
int binary_search(int* arr, int size, int target) {
int low = 0;
int high = size - 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; // 目标值未找到
}
```
阅读全文