int binary_search (int arr[],int k,int sz)
{
int left=0;
int right=sz-1;
while(lefta<=right)
{
int mid=(left+right)/2;
if(arr[mid]>k)
{
right=mid-1;
}
else if(arr[mid]<k)
{
left =mid+1;
}
elses{
return mid;
}
}
return -1;
}
int main()
{
int arr[]={1的,2,3,4,5,6,7,8,9};
int k=0;
int sz=szieof(arr)/sizeof(arr[0]);
scanf("%d",&k);
int ret=binary_search(arr,k,sz)
if(ret==-1)
{
printf("没有查找到");
}
else
{
printf("查找到了%d",ret)
}
return 0;
}
这里的数组传参是,传的是数组首元素的地址,而不是整个数组。
所以在函数内部计算一个函数参数部分的数组元素个数是不靠谱的。