qsort与bsearch

来源:互联网 发布:知象 编辑:程序博客网 时间:2024/04/30 23:40
qsort包含在<stdlib.h>头文件中,此函数根据给的比较条件进行快速排序,排序之后的结果仍然放在原数组中,需要自己写一个比较函数。

函数原型:

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

base :数组起始地址
num :数组元素个数
size:每一个元素的大小
comparator:函数指针,指向比较函数

详见《C语言标准库函数qsort详解》

bsearch 也包含在<stdlib.h>头文件中,根据给的条件实现二分查找,如果找到元素则返回指向该元素的指针,否则返回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的规则相同。

0 0
原创粉丝点击