bsearch函数包含的几个参数
在使用bsearch函数时,需要注意以下几点:
查找数组必须是经过预先排序的,排序的规则要和比较子函数compare的规则相同。
如果查找成功,该函数返回一个指向数组中匹配元素的指针,否则返回空指针。
bsearch函数是C语言库函数,用于在已排序的数组中执行二分查找。下面是一个使用bsearch函数的例子:
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 11;
int *result = (int *)bsearch(&target, arr, n, sizeof(int), compare);
if (result != NULL) {
printf("找到目标值 %d,位于数组下标 %ld\n", target, result - arr);
} else {
printf("未找到目标值 %d\n", target);
}
return 0;
}
注意在传入参数时,第一个传入的参数为待查找数字的变量的指针。函数的返回值也是指针。
待查找的元素key的类型,必须与被查找数组中元素的类型一致。
Compare函数指针的作用和用法和qsort函数中的comapre函数用法差不多。
如果数组不是以升序的升序的顺序排序的,或者包含相同键的重复记录,则结果可能会出错。