bsearch

使用二分查找,查找一个被排序过的数组

依赖头文件
#include <stdlib.h>

   void *bsearch(const void *key, const void *base,size_t nmemb, size_t size,int (*compar)(const void *, const void *));

描述

key : 指向要查找的元素
base : 指向被查找的数组
nmemb : 被查找数组的大小
size : 被查找数组元素的大小
int (*compar)(const void *, const void *) : 比对的函数

RETURN VALUE
查找到了就返回对应的元素,查找不到就返回NULL

   ┌──────────┬───────────────┬─────────┐│Interface │ Attribute     │ Value   │├──────────┼───────────────┼─────────┤│bsearch() │ Thread safety │ MT-Safe │└──────────┴───────────────┴─────────┘

使用示例:

   #include <stdio.h>#include <stdlib.h>#include <string.h>struct mi {int nr;char *name;} months[] = {{ 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" },{ 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" },{ 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" }};#define nr_of_months (sizeof(months)/sizeof(months[0]))static intcompmi(const void *m1, const void *m2){struct mi *mi1 = (struct mi *) m1;struct mi *mi2 = (struct mi *) m2;return strcmp(mi1->name, mi2->name);}intmain(int argc, char **argv){int i;qsort(months, nr_of_months, sizeof(struct mi), compmi);for (i = 1; i < argc; i++) {struct mi key, *res;key.name = argv[i];res = bsearch(&key, months, nr_of_months,sizeof(struct mi), compmi);if (res == NULL)printf("'%s': unknown month\n", argv[i]);elseprintf("%s: month #%d\n", res->name, res->nr);c}exit(EXIT_SUCCESS);}

扫码关注获取更多linux编程资源

C语言库自带的二分查找函数bsearch函数的使用示例相关推荐

  1. http://39.98.219.132 题库标准答案(题库序号:615)之二分查找

    序号:615 二分查找 Time Limit:1s Memory Limit:128MB 题目描述: 已有n个整数(从1开始编号),询问k次,每次输入一个数x,需要查找x在n个整数中的位置,若不存在则 ...

  2. C语言基础02——控制语句。二分查找、随机数讲解、求自幂数、整数逆序、X图案打印、猜数字、公约数公倍数、素数

    目录 分支语句(选择结构) if语句 switch语句 循环语句 while循环 do-while循环 for循环 循环语句的练习 转向语句 goto语句 break语句 continue语句 ret ...

  3. 二分查找法(函数binary_search)

    目录 定义 复杂度 解析 函数binary_search 代码实现 运行结果 总结 定义 二分查找也叫折半查找,是一种高效率的查找方法,但是折半查找方法要求顺序存储结构,按关键字大小有序排列. 复杂度 ...

  4. C语言复习日记1:二分查找

    该函数用于判定已排序的数组v中是否存在某个特定的值x.数组v的元素必须以升序排列.如果v中包含x,则该函数返回x在数组v中的位置:否则,该函数返回-1. /*binsearch函数:在v[0]< ...

  5. 二分查找板子(check()函数)

    之前找了很多博客,想找一个万能的二分板子,始终没有找到合适的,后来找同学大佬要了一个(鸣谢大佬!QAQ),现在将其上传,供日后自己学习使用. int erfen() {int l = 1, r = n ...

  6. 通过C语言实现二分查找法

    Hellow,我是jack,今天给大家分享的是C语言实现二分查找.话不多说,让我们直接进入正题. 首先让我们了解下什么是二分查找法 基本思想是将n个元素分成大致相等的两部分,取a [n/2]与x做比较 ...

  7. 二分查找(c语言实现)

    题目 本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int P ...

  8. PTA 函数题 二分查找(C语言)

    本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Posi ...

  9. java 二分查找_计算机入门必备算法——二分查找法

    1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...

最新文章

  1. Oracle数据库的关闭详解
  2. IT运维管理方案 成就企业信息化建设
  3. 实用金属材料手册_实用电工材料手册
  4. 2 Powershell与Cmd以及Unix/Linux Shell
  5. Apache ZooKeeper - 使用原生的API操作ZK_ACL权限
  6. python语言格式化输出_Python | 格式化输出字符串
  7. error: storage size of ‘threads’ isn’t known
  8. Java笔记-使用System.gc()进行内存回收
  9. 漫步数理统计三十二——中心极限定理
  10. 金蝶k3财务接口_金蝶云为企业成长而生,让工作更高效!
  11. 苹果涉嫌利用App Store打压屏幕时间应用竞争对手 已被投诉至欧盟
  12. 人机协同、数据驱动,云时代SOC的演进之路
  13. python-opencv有效随机角度旋转
  14. win10 linux子系统开启桌面显示
  15. position绝对定位后,a中使用display:block 无效的解决办法
  16. 《程序开发心理学——银年纪念版》前言
  17. mysql修改主键为unique_mysql 如何修改、添加、删除表主键及unique约束
  18. 测试驱动开发全功略(转)
  19. error LNK2001: 无法解析的外部符号unresolved external symbol __imp__JNI_CreateJavaVM@12
  20. 【Fusion】Mosek.Fusion基础

热门文章

  1. 敏友的【敏捷个人】有感(3): 有感于“敏捷个人”讨论与练习
  2. 字体中字号,磅值和mm之间的转换
  3. BestCoder Round #85
  4. nyoj99(欧拉路)
  5. SAPI(PHP常见的四种运行模式)
  6. NYOJ 620 真实的谎言
  7. 最大流ISAP算法模板
  8. NYOJ 179 LK's problem
  9. 珂朵莉的约数(牛客练习赛9)
  10. 00075_BigInteger