C语言用函数实现,二分法查找有序数组中的数,若没有返回1

题目:二分法查找有序数组中的数,没有返回-1

一、解题思路:
1.找出数组中间那个元素的下标(mid=begin/end),通过数组下标找出数组的中间值并与目标值比较,判断如果目标值与数值中间的下标对应的元素值相等,则返回b。
2.如大于目标值,把中间的下标减去1并作为最后一个下标(end),begin不变,然后mid=(begin+end)/2计算下一个中间值。
3.如小于目标值,把中间的下标加上1并作为第一个下标(begin),end不变,然后mid=(begin+end)/2计算下一个中间值。
4.若无法找到返回-1,用-1的原因是因为数组中的元素下标都大于0.

#include
int Binaryserach (int arr[],int len,int a);
int main()
{

  int a=6;
  int arr[]={1,2,3,4,5,6,7};
  Binaryserach(arr,sizeof (arr)/sizeof (arr[0]),a);
  printf("%d",Binaryserach(arr,sizeof (arr)/sizeof (arr[0]),a));


return 0;
}
int Binaryserach (int arr[],int len,int a)
{   
	int b=a;  	int begin=0;	int end=len;	int mid=len/2;	int i=0;
	for(i=0;i

你可能感兴趣的:(C语言)