C 编程/stdlib.h/bsearch
外观
在 C 标准库 中,bsearch 是一个用于使用 二分搜索算法 在排序数组中搜索对象的函数。[1]
bsearch 是一个通用函数,它可以在任何大小的排序数组中搜索,其中包含任何类型的对象或指向对象的指针,以及使用任何类型的比较谓词。但是,通用性是以类型安全为代价的,因为 bsearch 在 void 指针上运行;并且在函数调用数量上也很昂贵(因为每次比较都需要调用比较谓词),这些调用具有很大的开销。
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size,
int (*compare)(const void *, const void *));
// notice nmemb before size, unlike fread and fwrite
bsearch() 函数返回指向数组中匹配成员的指针,如果未找到匹配项,则返回 NULL。如果数组具有多个匹配元素,则返回值将是指向这些元素之一的指针。哪个特定的元素未指定。[2]
- ↑ ISO/IEC 9899:1999 规范 (PDF). p. 318, § 7.20.5.1.
- ↑ UNIX 手册页:
man 3 bsearch