使用c语言实现折半查找的递归算法
时间: 2024-06-18 07:02:25 浏览: 175
实现折半查找的递归算法需要遵循以下步骤:
1.定义一个函数来实现折半查找,并传入需要查找的数组,需要查找的数,数组的左边界和右边界作为参数。
2.检查左边界是否小于等于右边界。如果小于等于,执行以下步骤:
3.计算中间元素的索引。
4.检查中间元素是否等于需要查找的数。如果是,返回中间元素的索引。
5.如果中间元素大于需要查找的数,递归调用函数,并将中间元素的左边作为右边界。
6.如果中间元素小于需要查找的数,递归调用函数,并将中间元素的右边作为左边界。
7.如果左边界大于右边界,则返回-1,表示没有找到。
以下是使用c语言实现折半查找的递归算法的示例代码:
```c
#include <stdio.h>
int midfind(int s[], int x, int left, int right) {
if (left <= right) {
int mid = (left + right) / 2;
if (x < s[mid]) {
return midfind(s, x, left, mid - 1);
} else if (x > s[mid]) {
return midfind(s, x, mid + 1, right);
} else {
return mid;
}
} else {
return -1;
}
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int len = sizeof(arr) / sizeof(arr);
int x = 5;
int result = midfind(arr, x, 0, len - 1);
if (result == -1) {
printf("没有找到%d\n", x);
} else {
printf("%d在数组中的索引是%d\n", x, result);
}
return 0;
}
```
上面这段代码中,midfind()函数用于查找需要的数在数组中的索引。首先,检查左边界是否小于等于右边界。如果是,计算中间元素的索引,然后检查中间元素是否等于需要查找的数。如果是,返回中间元素的索引。如果中间元素大于需要查找的数,递归调用函数,并将中间元素的左边作为右边界。如果中间元素小于需要查找的数,递归调用函数,并将中间元素的右边作为左边界。如果左边界大于右边界,则返回-1,表示没有找到。在主函数中,定义一个数组,需要查找的数,数组的长度和结果变量,然后调用midfind()函数来查找需要的数的索引,并输出结果。
阅读全文