#include <stdio.h>
int binary_search(int *arr,int len,int find_this)
{
int mid,start = 0,end = len;
while(start <= end)
{
mid = (start + end) / 2;
/*
* 要找的数位于右半部分
* 结束边界不变,还是end
* 开始边界是之中间边界加1,所以是mid + 1
* */
if(arr[mid] < find_this)
start = mid + 1;
/*
* 要找的数位于左半部分
* 起始边界不变,结束边界是之前的中间边界减1所以是mid - 1
* */
else if(arr[mid] > find_this)
end = mid - 1;
/*
* 这个就是要找的数
* */
else
return mid;
}
/*
* 没有要找的数,返回失败
* */
return -1;
}
int main()
{
int brr[] = {0,1,2,3,4,5,6,7,8,9};
int len = sizeof(brr) / sizeof(brr[0]);
int i;
for(i = 0; i < len; i++)
printf("%d ",brr[i]);
printf("\n");
int find;
printf("What you wanna find:");
scanf("%d",&find);
int res = binary_search(brr,len,find);
printf("pos = %d,brr[%d] = %d\n",res,res,brr[res]);
}
二分法查找
最新推荐文章于 2021-02-22 14:25:23 发布