bsearch.c

来自「操作系统SunOS 4.1.3版本的源码」· C语言 代码 · 共 38 行

C
38
字号
#if !defined(lint) && defined(SCCSIDS)static	char sccsid[] = "@(#)bsearch.c 1.1 92/07/30 SMI"; /* from S5R2 1.5 */#endif/*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 */	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 + =
减小字号Ctrl + -
显示快捷键?