折半查找的递归算法c语言流程图
时间: 2024-08-12 14:08:30 浏览: 46
折半查找(Binary Search),也称为二分查找,是一种在有序数组中快速查找特定元素的搜索算法。其基本思想是每次比较中间元素与目标值,然后根据大小关系决定是在数组的左半部分还是右半部分继续查找。以下是折半查找的递归算法的C语言描述和简单流程图:
```c
// 递归版的二分查找函数
int binarySearch(int arr[], int low, int high, int target) {
if (high >= low) {
// 计算中间索引
int mid = low + (high - low) / 2;
// 如果中间元素就是目标
if (arr[mid] == target)
return mid;
// 如果中间元素大于目标,则在左半部分查找
else if (arr[mid] > target)
return binarySearch(arr, low, mid - 1, target);
// 否则,在右半部分查找
else
return binarySearch(arr, mid + 1, high, target);
}
// 找不到目标时,返回 -1
return -1;
}
```
流程图大致如下:
1. 从数组的第一个元素(low)开始,与中间元素(mid)比较。
2. 如果目标元素等于中间元素,返回中间索引。
3. 如果目标小于中间元素,递归调用在数组的左半部分(low到mid-1)查找。
4. 如果目标大于中间元素,递归调用在数组的右半部分(mid+1到high)查找。
5. 当低索引大于高索引时,表示目标不存在于数组中,返回-1。
阅读全文