intbinsearch(intarr[],int len,int key ) ) )。
{
assert(arr!=空; //安全处理机制
if (空值==arr ) )。
{
返回- 1;
}
int low=0; //左指针
int high=len-1; //右指针
int mid; //intmid=(lowhigh )/2; //各缩小一半,需要与key进行比较的中值
如果wile(low=high )//low和high之间至少有一个值,则继续比较
{
mid=(低高)/2; //mid=(high-low )/2 low;//使mid指向临时范围的中间值
如果if(ARR[mid]==key ) mid所指的值是key,则直接返回其下标
{
返回mid;
}
如果elseif(arr[mid]key )/mid所指定的值小于key要查找的key,则该值必须位于mid的右半部分
{
low=mid 1;
}
如果else//mid所指的值大于key要找的key,则该值必须位于mid的左半部分
{
high=mid-1;
}
}
//如果while循环此时结束,并且函数还没有结束,并且此数组中一定不存在要查找的此值,则返回-1
返回- 1;
}
int main () )
{
intarr [ ]={ 1,3,4,5,8,10,20,23,36,50 };
inttmp=Binsearch(arr,sizeof ) arr )/sizeof ) arr[0],-100 );
printf('%dn ',tmp );
返回0;
}