#include<stdio.h>
int search(int *array,int start,int end,int num);
int main()
{
int array[] = {1,2,5,7,9,10,11,14,17,18,20};
int size = sizeof(array)/sizeof(int);
int *pointer = array;
int result = search(array,0,size - 1,21);
printf("%d\n",result);
return 0 ;
}
// 利用递归进行二分查找 如果找到返回此数在数组的位置,否则返回-1
// *array数组指针
// start 数组开始的位置
// end 数组结束的位置
// num 要查找的数字
int search(int *array,int start,int end,int num)
{
if(start != 0 && start != end)
{
end++;
}
int size = end - start;
int middle = (end + start) / 2;
if(size == 0)
{
if(*(array+middle) == num)
{
return middle;
}else
{
return -1;
}
}
//如果中间的数大于要查找的数,则从中间的数左边开始查找
//如果中间的数小于要查找的数,则从中间的数右边开始查找
if(*(array+middle) > num)
{
return search(array,start,middle-1,num);
}else if(*(array+middle) < num)
{
return search(array,middle + 1,end,num);
}else
{
return middle;
}
return -1;
}
c语言利用递归实现二分查找
最新推荐文章于 2022-07-15 13:47:50 发布