⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsearch.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 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 + -