- 编写一个递归函数实现二分查找(有序数列) (c语言)
- 在whlire里面做循环,一直找到brr【mid】 == c,退出循环
#include <stdio.h>
//编写一个递归函数实现二分查找(有序数列)
int find(int *brr, int a, int b, int c)
{
if(a > b)
return -1;
while(a <= b)
{
int mid = (a + b)/2;
if(brr[mid] < c)
{
return find(brr, mid + 1, b, c)
}
if(brr[mid] > c)
{
return find(brr, a, mid - 1, c)
}
else if(brr[mid] == c)
{
return mid;
}
}
}
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6};
int low = 0;
int high = sizeof(arr)/sizeof(int) -1;
int index = find(arr, low, high, 4)
if (index = -1)
{
printf("no find\n");
}
else if (index != -1)
{
printf("jieguo %d\n", index);
}
return 0;
}
#include <stdio.h>
//C语言 编写一个程序实现二分查找
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int low = 0; //定义一个开头
int high = sizeof(arr)/sizeof(int) - 1; //定义一个数的尾数
int a;
printf("input:"); //输入您要找的数
scanf("%d",&a);
while(low <= high)
{
int mid = (low + high)/2;
if(arr[mid] < a)
{
low = mid + 1;
}
else if(arr[mid] > a)
{
high = mid - 1;
}
else if(arr[mid] == a)
{
printf(find %d\n, mid)
return ;
}
}
printf("not find \n");
return 0;
}