📅  最后修改于: 2023-12-03 14:59:44.613000             🧑  作者: Mango
bsearch()
bsearch()
函数是C++标准库中的一个函数,可以在有序数组中进行二分查找。它用于在数组中查找特定的值,并返回一个指向找到的元素的指针。bsearch()
函数是一个非常高效的查找算法,因为它利用了有序数组的特性,将搜索范围缩小到一半。
void* bsearch(const void* key, const void* base, size_t num, size_t size,
int (*compar)(const void*, const void*));
参数说明:
key
: 要查找的值base
: 数组的起始地址num
: 数组中元素的个数size
: 数组中每个元素的大小(以字节为单位)compar
: 用于比较两个元素的函数指针返回值:
NULL
下面是一个使用bsearch()
函数查找整数的示例代码:
#include <iostream>
#include <cstdlib>
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int key = 12;
int* result = (int*)bsearch(&key, arr, sizeof(arr) / sizeof(arr[0]), sizeof(arr[0]), compare);
if (result != NULL) {
std::cout << "Found key at index: " << (result - arr) << std::endl;
} else {
std::cout << "Key not found" << std::endl;
}
return 0;
}
解释代码:
<iostream>
和<cstdlib>
。arr
和一个要查找的整数key
。compare()
,用于比较两个整数。main()
函数中,调用bsearch()
函数进行查找。传递给bsearch()
函数的参数为:要查找的值&key
,数组的起始地址arr
,数组中的元素个数sizeof(arr) / sizeof(arr[0])
,每个元素的大小sizeof(arr[0])
,以及比较函数compare
。bsearch()
的返回值,如果指针不为空,则说明找到了指定的值。输出找到的值在数组中的索引result - arr
。如果指针为空,则说明未找到指定的值。bsearch()
函数进行查找。bsearch()
函数的比较函数必须满足以下要求:bsearch()
函数返回的指针类型为void*
,需要进行类型转换才能得到所需的指针类型。更多关于bsearch()
函数的详细信息,请参阅C++ reference。