补充知识: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<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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C/C++中有一个快速排序的标准库函数 qsort ,在stdlib.h和cstdlib 中声明,其原型为: 使用...
    编程半岛阅读 2,920评论 0 0
  • 各位第二小组的家人们,大家早上好!一转眼的功夫,你已经在2.0走过了25天时间。就像上次我在大晨会里说的那样,...
    智升_238c阅读 1,137评论 0 0
  • 我们人不应该也是这样吗?虽然每个人看着很轻,不值一提,可每个人都有他发挥的作用,要把自己用到极致,更能提现自身的价...
    木在林夕阅读 1,417评论 0 1
  • 酒逢适时醉,称意尽发挥。 平素每相抑,恐多言是非。 謹小慎微处,薄冰危桥脆。 举手长企祈,投足顾影颓。 浮生涉江湖...
    陽春阅读 1,683评论 2 8
  • 一庭花发来知已 两岸柳垂约美人【莫之】 日永风和春不老 山青水秀景常新【莫之】 高寒唯有月中桂 香远不如水里莲【莫...
    江南莫之阅读 3,283评论 2 4