📄 bsearch.c
字号:
/* @(#)bsearch.c 1.5 *//*LINTLIBRARY*//* * Binary search algorithm, generalized from Knuth (6.2.1) Algorithm B. * */typedef char *POINTER;POINTERbsearch(key, base, nel, width, compar)POINTER key; /* Key to be located */POINTER base; /* Beginning of table */unsigned nel; /* Number of elements in the table */unsigned width; /* Width of an element (bytes) */int (*compar)(); /* Comparison function */{ int two_width = width + width; POINTER last = base + width * (nel - 1); /* Last element in table *//* DAG -- WARNING! The following test is not safe due to possible address wrap-around when `width' is large. I have seen it happen! */ while (last >= base) { register POINTER p = base + width * ((last - base)/two_width); register int res = (*compar)(key, p); if (res == 0) return (p); /* Key found */ if (res < 0) last = p - width; else base = p + width; } return ((POINTER) 0); /* Key not found */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -