bsearch and qsort 下载本文

内容发布更新时间 : 2024/5/23 22:34:39星期一 下面是文章的全部内容请认真阅读。

C++ 中库函数bsearch的简单研究(含示例)

/*bsearch函数声明如下:

void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *));

参数的意思和qsort的差不多,区别在于: 1. qsort用来排序,bsearch用二分法来查找元素 2. bsearch中的base必须是升序排列的数组!!!

3. 如果数组里有重复的答案,则bsearch会返回其中一个的地址 (具体返回哪一个不确定)

4. bsearch有五个自变量,第一个是要找的东西,剩下的跟qsort一模一样 5. bsearch如果没找到所求则回传NULL ,否则回传该元素被找到的地址(void *) */

#include #include using namespace std;

int compare(const void*a,const void *b) {

return *((int*)a)-*((int*)b); }

int main()

{

int a[100]; int i;

for(i=0;i<100;i++) a[i]=i+1; i=50; int *result;

result=(int*)bsearch((void*)&i,(void*)a,100,sizeof(a[0]),compare); cout<

C语言标准库函数 bsearch 详解

C/C++ 2009-08-11 11:52:57 阅读247 评论0 字号:大中小 来源:http://www.slyar.com/blog/stdlib-bsearch.html C语言中 bsearch 包含在头文件中,此函数可以根据你给的条件实现二分查找,如果找到元素则返回指向该元素的指针,否则返回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语言标准库函数 qsort 详解 2008年12月31日 11:15 Slyar 发表评论 阅读评论

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。

函数原型:

void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );

用法以及参数说明:

Sorts the num elements of the array pointed by base, each element size bytes long,