C语言Bsearch二分查找函数

                                              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函数用法差不多。

如果数组不是以升序的升序的顺序排序的,或者包含相同键的重复记录,则结果可能会出错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值