|
|
70 | void * bsearch
(register
const void *key,const
void *base0,
|
71 | size_tnmemb,
registersize_t
size, |
72 | registerint
(*compar)(constvoid
*, constvoid
*)) |
73 | { |
74 | registerconst
char*base = (constchar
*) base0; |
75 | registerint
lim, cmp; |
76 | registerconst
void*p; |
77 | |
78 | for(lim = nmemb; lim != 0; lim >>= 1) {
|
79 | p = base + (lim >> 1) * size; |
80 | cmp = (*compar)(key, p); |
81 | if(cmp == 0)
|
82 | return(void
*)p; |
83 | if(cmp > 0) {
/** key > p: move right */ |
84 | base = (constchar
*)p + size; |
85 | lim--; |
86 | }/** else move left */ |
87 | }
|
88 | return(NULL);
|
89 | } |
本文深入探讨了bsearch函数的工作原理,通过详细分析其内部逻辑,揭示了如何利用二分查找算法实现高效搜索的过程。文章还介绍了如何在不同场景下应用bsearch函数,包括参数解释、使用技巧及注意事项。
454

被折叠的 条评论
为什么被折叠?



