bsearch函数声明如下:
void *bsearch(const void *key, const void *base, size_t *nelem,
size_t width, int(*fcmp)(const void *, const *));
参数的意思和qsort
的差不多,区别在于:
-
qsor
t用来排序,bsearch
用二分法来查找元素 -
bsearch
中的base
必须是升序排列的数组!!! - 如果数组里有重复的答案,则
bsearch
会返回其中一个的地址 (具体返回哪一个不确定)
4.bsearch
有五个自变量,第一个是要找的值,剩下的跟qsort
一模一样 -
bsearch
如果没找到所求则回传NULL
,否则回传该元素被找到的地址(void *)
#include<iostream>
#include<cstdlib>
using namespace std;
int compare(const void*a,const void *b)
{
return *((int*)a)-*((int*)b);
}
int main()
{
int a[100];
int i;
for(i=0;i<100;i++)
a[i]=i+1;
i=50;
int *result;
result=(int*)bsearch((void*)&i,(void*)a,100,sizeof(a[0]),compare);
cout<<i<<' '<<*result<<endl;
system("pause");
return 0;
}