碎碎念念
假设我们要在一个升序排序的整型数组中查找某个特定的整数,如果找到了,返回该整数在数组中的索引号,如果没有找到,则返回-1。
我们首先看要找的数和数组中间的数的大小关系,如果相等,那么说明找到了,如果要找的数小于数组中间的数,那么我们再在数组的前半部分继续查找,如果大于,那么我们再在数组的后半部分继续查找,每次查找都将范围缩小一半,称为二分查找。
代码
代码语言:javascript复制#include<stdio.h>
int binary_search(int line[],int target,int begin,int end)
{
int middle=(begin end)/2;
if(begin>end)
return -1;
if(target==line[middle])
return middle;
else if(target<line[middle])
return binary_search(line,target,begin,middle-1);
return binary_search(line,target,middle 1,end);
}
int main()
{
int line[10]={1,2,3,4,5,6,7,8,9,10};
if(binary_search(line,5,0,9)!=-1)
printf("YES %d",binary_search(line,5,0,9) 1);
else
printf("NO");
}