
/**//*bsearch函數聲明如下:

void *bsearch(const void *key, const void *base, size_t *nelem,
size_t width, int(*fcmp)(const void *, const *));

參數的意思和qsort的差不多,區別在于:
1. qsort用來排序,bsearch用二分法來查找元素
2. bsearch中的base必須是升序排列的數組!!!
3. 如果數組里有重復的答案,則bsearch會返回其中一個的地址 (具體返回哪一個不確定)
4. bsearch有五個自變量,第一個是要找的東西,剩下的跟qsort一模一樣
5. 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;
}

值得特別注意的是:函數的第一個元素是一個地址變量,而不是一個int型或者是float型的變量。