补充知识:bsearch的使用

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一模一样
  4. bsearch如果没找到所求则回传NULL ,否则回传该元素被找到的地址(void *)
#include
#include
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<

你可能感兴趣的:(补充知识:bsearch的使用)