懒得写二分查找,结果发现stdlib里自带了二分查找。

C 库函数 void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) 对 nitems 对象的数组执行二分查找,base 指向进行查找的数组,key 指向要查找的元素,size 指定数组中每个元素的大小。数组的内容应根据 compar 所对应的比较函数升序排序。

声明

gcc 中的声明(和qsort放一起的)

#ifndef _CRT_ALGO_DEFINED
#define _CRT_ALGO_DEFINED
void *__cdecl bsearch(const void *_Key,const void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
void __cdecl qsort(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
#endif

clang中我没找到在哪

参数

  • key -- 指向要查找的元素的指针,类型转换为 void*。
  • base -- 指向进行查找的数组的第一个对象的指针,类型转换为 void*。
  • nitems -- base 所指向的数组中元素的个数。
  • size -- 数组中每个元素的大小,以字节为单位。
  • compar -- 用来比较两个元素的函数(一般和你qosort的共用)。

返回值

如果查找成功,该函数返回一个指向数组中匹配元素的指针,否则返回空指针。

样例:

#include <stdio.h>
#include <stdlib.h> int cmpfunc(const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
} int values[] = { , , , , }; int main ()
{
int *item;
int key = ; /* 使用 bsearch() 在数组中查找值 32 */
item = (int*) bsearch (&key, values, , sizeof (int), cmpfunc);
if( item != NULL )
{
printf("Found item = %d\n", *item);
}
else
{
printf("Item = %d could not be found\n", *item);
} return();
}

最新文章

  1. String split
  2. MySQL Error Handling in Stored Procedures 2
  3. Source Insight 使用
  4. JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
  5. 用dx实现半透遮挡效果
  6. 过滤textarea
  7. 如何禁止scrollView 的子控件自动滑到 底部或者中间部分
  8. CentOS 6.5(64bit)安装GCC4.8.2+Qt5.2.1(替换GCC的链接库)
  9. EF6+MVC4+EasyUI个人日记系统开源共享
  10. git log 查看 当前分支的 提交历史
  11. canvas+gif.js打造自己的数字雨头像
  12. Struts2 (二)
  13. 生物分子gene
  14. 跨平台移动APP开发进阶(二)HTML5+、mui开发移动app教程
  15. Linux 学习 (十) 网络配置
  16. bzoj4671: 异或图——斯特林反演
  17. leetcode 381.Insert Delete GetRandom
  18. Linux下的常见压缩解压缩命令
  19. [转载]DevOps在传统企业的落地实践及案例分享
  20. VS编译LESS插件

热门文章

  1. 关于Android发送邮件
  2. 运营商如何关闭2G、3G网络?这事儿得从小灵通说起
  3. 「AHOI2014/JSOI2014」拼图
  4. centos彻底卸载mysql(不保留数据)
  5. 数据库先系统与原理第三章笔记:数据库SQL查询语言
  6. ab的压力测试(转)
  7. 06. Z字型变换
  8. iOS 批量上传图片的 3 种方法
  9. 你知道Verilog HDL程序是如何构成的吗
  10. Spark 写 Hive table 非常慢【解决】