C语言中用bsearch()实现查找操作
2010-01-20 14:30
399 查看
C语言中可以用bsearch()实现二分查找。同qsort()一样,bsearch()也包含在<stdlib.h>库中,且同样要自定义比较子函数。其原型如下:
key指向所要查找的元素,base指向进行查找的数组,nmem为查找长度,一般为数组长度,size为每个元素所占的字节数,一般用sizeof(...)表示,comp指向比较子函数,它定义比较的规则。需要注意的是,数据必须是经过预先排序的,而排序的规则要和comp所指向比较子函数的规则相同。如果查找成功则返回数组中匹配元素的地址,反之则返回空。对于有多于一个的元素匹配成功的情况,bsearch()未定义返回哪一个。
例:
结果如下:
void *bsearch(const void *key, const void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *)); |
例:
#include <stdio.h> #include <stdlib.h> #define NUM 8 int compare(const void *p, const void *q) { return (*(int *)p - *(int *)q); } int main(int argc, char *argv[]) { int array[NUM] = {9, 2, 7, 11, 3, 87, 34, 6}; int key = 3; int *p; qsort(array, NUM, sizeof(int), compare); p = (int *)bsearch(&key, array, NUM, sizeof(int), compare); (p == NULL) ? puts("not found") : puts("found"); return 0; } |
found |
相关文章推荐
- C语言实现双链表基本操作(创建、查找、插入、删除)
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- C语言~通讯录,可实现删除、查找、更改等操作
- C 语言中用bsearch()实现查找操作
- 单链表相关操作之C语言实现:插入,删除,倒转,复制,查找。。。
- 在链表中获取一个数据、查找操作C语言实现
- C 语言中用bsearch()实现查找操作
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- C语言提高-第26/27讲: 实现线性表基本操作的函数/编写查找和排序函数
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C 语言中用bsearch()实现查找操作
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- C语言实现顺序表的插入、删除、查找、遍历等基本操作
- 利用c语言的qsort与bsearch实现排序与查找
- c语言:用双向链表实现双端队列(队列两端都可以进行入队出队操作)
- c语言实现单链表建立,插入,删除,查找,循环链表,静态链表
- 数据结构 单链表插入删除操作(c语言实现)
- C语言调用库函数实现二分查找
- C语言实现 二分查找数组中的Key值(递归和非递归)
- c语言实现字符串的各种操作