001 C语言题库之写一个函数 ,利用二分法查找有序数组中具体某个数
程序员文章站
2022-03-13 18:20:41
...
int main()
{
int binary_search(int arr[],int i,int j);
int arr[]={1,2,3,4,5,6,7,8,9};
int k=4;//要找的数字
int num=sizeof(arr)/sizeof(arr[0]);
int ret=binary_search(arr,k,num);
if(-1==ret)返回值为-1时,代表没找到
{
printf("没找到!");
}
else
{
printf("找到了,下标是:%d",ret);
}
return 0;
}
int binary_search(int arr[],int k,int num)
{
int left=0;
int right=num-1;
while(left<=right)
{
int mid=(left+right)/2;
if(arr[mid]>k)
{
right=mid-1;
}
else if(arr[mid]<k)
{
left=mid+1;
}
else
{
return mid;
}
if(left>right)
{
return -1;//若没找到,返回-1
}
}
}