#include <stdio.h>
int binary_search(int x, int data[], int b, int e)
{
int i;
while(b <= e)
{
i = (b + e) / 2;
if(data[i] == x) return i;
if(data[i] < x)
b = i + 1;
else
e = i - 1;
}
return -1;
}
int binary_search_recursion(int x, int data[], int b, int e)
{
int i;
i = (b + e) / 2;
if(b > e) return -1;
if(data[i] != x)
{
if(x < data[i])
return binary_search_recursion(x, data, 0, i - 1);
else
return binary_search_recursion(x, data, i + 1, e);
}
else
return i;
}
int main()
{
int data[] = {1, 4, 5, 7, 9};
printf("%d /n", binary_search_recursion(9, data, 0, 4));
printf("%d /n", binary_search(9, data, 0, 4));
printf("%d /n", binary_search_recursion(90, data, 0, 4));
printf("%d /n", binary_search(89, data, 0, 4));
return 0;
}
拆半查找的递归和非递归算法
最新推荐文章于 2021-05-23 21:46:21 发布
本文介绍了一种经典的算法——二分查找,并通过两种不同的方法实现了该算法:迭代法和递归法。文中提供了完整的C语言代码示例,展示了如何在一个有序数组中查找特定元素的位置。
1115

被折叠的 条评论
为什么被折叠?



