bsearch()函数用于二分法搜索。
bsearch()函数 语法
void*bsearch(const void*key,const void*list,size_t*n,size_t m,int(*fc)(const void*,const*));
bsearch()函数的语法参数说明如表所示。
bsearch()函数没有返回值。
bsearch()函数 示例
本示例使用bsearch函数实现二分法搜索元素456,其具体代码如下所示:
#include<stdlib.h>
#include<stdio.h>
#define NELEMS(arr)(sizeof(arr)/sizeof(arr[0]))
int a[]={123,456,789,654,312,741};/*定义数组*/
int num(const int*p1,const int*p2)/*自定义函数*/
{
return(*p1-*p2);
}
int search(int key)/*自定义函数*/
{
int*ptr;
ptr=bsearch(&key,a,NELEMS(a),
sizeof(int),(int(*)(const void*,const void*))num);/*采用二分法进行搜索*/
return(ptr!=NULL);
}
int main()
{
if(search(456))/*调用函数*/
printf("456 is in the list. ");
else
printf("456 isn't in the list. ");
return 0;
}
运行结果如图所示。