C++ 中库函数bsearch的简单研究(含示例)

C++ 中库函数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一模一样
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型的变量。

你可能感兴趣的:(C++ 中库函数bsearch的简单研究(含示例))