Linux内核中的bsearch二分查找函数
【摘要】
/** bsearch - binary search an array of elements* @key: pointer to item being searched for* @base: pointer to first element to search* @num: number of elements* @size: s...
-
/*
-
* bsearch - binary search an array of elements
-
* @key: pointer to item being searched for
-
* @base: pointer to first element to search
-
* @num: number of elements
-
* @size: size of each element
-
* @cmp: pointer to comparison function
-
*
-
* This function does a binary search on the given array. The
-
* contents of the array should already be in ascending sorted order
-
* under the provided comparison function.
-
*
-
* Note that the key need not have the same type as the elements in
-
* the array, e.g. key could be a string and the comparison function
-
* could compare the string with the struct's name field. However, if
-
* the key and elements in the array are of the same type, you can use
-
* the same comparison function for both sort() and bsearch().
-
*/
-
void *bsearch(const void *key, const void *base, size_t num, size_t size,
-
int(*cmp)(const void *key, const void *elt))
-
{
-
size_t start = 0, end = num;
-
int result;
-
while (start < end) {
-
size_t mid = start + (end - start) / 2;
-
result = cmp(key, base + mid * size);
-
if (result < 0)
-
end = mid;
-
else if (result > 0)
-
start = mid + 1;
-
else
-
return (void *)base + mid * size;
-
}
-
return NULL;
-
}
-
EXPORT_SYMBOL(bsearch);
文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/nameofcsdn/article/details/78139602
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)