//自定义函数
int binary_search(int arr[],int k,int sz){
//算法的实现
// int sz=sizeof(arr)/sizeof(arr[0]);//传参过来后不能这样求元素个数了(要写在主函数)
//范围:left-right
int left=0;//左下标
int right=sz-1;//右下标
while(left<=right)
{ int mid=(left+right)/2;//中间元素下标
if (arr[mid]<k)
{
left=mid+1;//left取中间+1的下标开始
}
else if(arr[mid]>k){
right=mid-1;//right取中间-1的下标开始
}else{
return mid;
}
}
return -1;
}
int main(){
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
int sz=sizeof(arr)/sizeof(arr[0]);
// int ret=binary_search(arr,k);//这里的arr传过去的是首元素地址
//改为: int ret=binary_search(arr,k,sz);
int ret=binary_search(arr,k,sz);//调用binary_search函数
if(ret==-1)
{
printf("找不到指定的数字\n");
}else
{
printf("找到了,下标是:%d\n",ret);
}
return 0;
}
结果:找到了,下标是:6