- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言标准库函数bsearch 详解
C语言标准库函数bsearch 详解
(2010-11-08 17:43:08)
转载
标签:
分类: C语言中 bsearch 包含在stdlib.h头文件中,此函数可以根据你给的条件实现二分查找,如果找到元素则返回指向该元素的指针,否则返回NULL;对于有多个元素匹配成功的情况,bsearch()未定义返回哪一个。使用 bsearch 函数也要自己定义比较子函数。
函数原型
void *bsearch(const void *key, const void *base, size_t num, size_t size, int (*cmp)(const void *, const void *));
解释一下参数
key 指向要查找的元素
base 指向进行查找的数组
num 数组中元素的个数
size 数组中每个元素的大小,一般用sizeof()表示
cmp 比较两个元素的函数,定义比较规则。需要注意的是,查找数组必须是经过预先排序的,而排序的规则要和比较子函数cmp的规则相同。
因为使用bsearch函数要求数组预先排好序,所以该函数通常和快速排序函数(qsort)一起使用,关于qsort函数,详见《C语言标准库函数 qsort 详解》
关于bsearch()的具体应用请见《POJ 2503 Babelfish C语言版》
C语言中可以用bsearch()实现二分查找。同qsort()一样,bsearch()也包含在stdlib.h库中,且同样要自定义比较子函数。其原型如下:
void *bsearch(const void *key, const void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *)); key指向所要查找的元素,base指向进行查找的数组,nmem为查找长度,一般为数组长度,size为每个元素所占的字节数,一般用sizeof(...)表示,comp指向比较子函数,它定义比较的规则。需要注意的是,数据必须是经过预先排序的,而排序的规则要和comp所指向比较子函数的规则相同。如果查找成功则返回数组中匹配元素的地址,反之则返回空。对于有多于一个的元素匹配成功的情况,bsearch()未定义返回哪一个。
例:
#include stdio.h#include stdlib.h#define NUM 8int compare(const void *p, const void *q){return (*(int *)p - *(int *)q);}int main(int argc, char *argv[]){int array[NUM] = {9, 2, 7, 11, 3, 87, 34, 6};int key = 3;int *p;qsort(array, NUM, sizeof(int), compare);p = (int *)bsearch(key, array, NUM, sizeof(int), compare);(p == NULL) ? puts(not found) : puts(found);return 0;} 结果如下:
found
您可能关注的文档
- Chap_9 函数.ppt
- Chapter_6-4 相对论理论的四维形式.pdf
- charter3作业.doc
- chapter6_动态规划.ppt
- chem SUB 机经汇总03-10.pdf
- CHEN系统同步及其在保密通讯中的应用.pdf
- chp2-3乘法运算.ppt
- Cimatron E9快捷键说明.pdf
- CJ-1D垂直型超净工作台和垂直型超净工作台价格.doc
- chp3_课后习题解答.pdf
- 2024年秋季新外研版三年级上册英语课件 M10U2.pptx
- 2024年秋新人教版数学一年级上册课件 第2单元 6~10的认识和家、减法 2 6~9的加、减法 第5课时 8和9的加、减法.pptx
- 2024年秋新人教版一年级上册数学教学课件 五 20以内的进位加法 第6课时 练一练.pptx
- 2024年新人教版一年级数学上册课件 第四单元 11~20的认识 课时1 10的再认识.pptx
- 2024年新人教版数学一年级上册 第5单元 20以内的进位加法 4 解决问题 第3课时 练一练.pptx
- 2024年秋新人教版七年级上册数学教学课件 5.2 第2课时 移项.pptx
- 2024秋新鲁教版英语六年级上册课件 Unit 1 Section B (1a-1d) (第4课时).pptx
- 2024年新苏教版数学一年级上册全册教学课件 第一单元 0~5的认识和加减法练习二.pptx
- 2024年新鲁科版八年级上册物物理教学课件 第三章 光现象3.5 凸透镜成像的规律.pptx
- 2024年秋季新西师大版一年级上册数学课件 第二单元 0~9的加减法 2.认识减法 第3课时 做张减法表 .pptx
最近下载
- 金刚砂耐磨地坪工程劳务施工合同协议书范本.doc
- 2024年洛阳文化旅游职业学院单招职业技能测试题库精编答案.docx VIP
- DL_T 2078.2-2021CN 调相机检修导则 第2部分: 保护及励磁系统.docx
- GB39800.2-2020 个体防护装备配备规范 第2部分:石油、化工、天然气.pdf
- T_CIATCM 121-2024 共享中药房中药调剂信息系统建设指南.pdf VIP
- 优秀仓管员全能战实训练.doc VIP
- 2010太阳能热水系统在北京奥运村工程中的应用.pdf VIP
- 建筑工程安全资料全套整理版.doc
- 保健食品原料目录 营养素补充剂(2023年版).docx
- SA51024矽力杰 中文资料 规格书 pdf 下载电源管理芯片全线.pdf VIP
文档评论(0)