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