pta6-27 二分查找c语言
时间: 2024-12-25 07:11:18 浏览: 5
pta6-27 题目涉及到二分查找算法(Binary Search),这是一个用于在有序数组中查找特定元素的搜索算法。在C语言中实现二分查找的基本步骤如下:
1. **初始化**:设置左指针`low`为0,右指针`high`为数组长度减一。
2. **循环条件**:只要左指针`low`小于等于右指针`high`,循环继续。
3. **中间位置**:计算中间索引`mid`,通常通过 `(low + high) / 2` 计算。
4. **比较**:将中间元素的值与目标值`target`进行比较。
- 如果相等,返回中间索引。
- 如果中间元素大于目标值,说明目标在左侧,更新右指针为`mid - 1`。
- 如果中间元素小于目标值,说明目标在右侧,更新左指针为`mid + 1`。
5. **结束条件**:如果左指针大于右指针,表示未找到目标值,返回-1(或相应错误码)。
这里是一个简单的二分查找函数示例(假设数组已排序):
```c
#include <stdio.h>
int binarySearch(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)
high = mid - 1;
else
low = mid + 1;
}
return -1; // 如果未找到目标,返回-1
}
// 测试函数
int main() {
int arr[] = {1, 3, 5, 8, 9, 11};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 8;
int result = binarySearch(arr, n, target);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array.\n");
return 0;
}
```
阅读全文