折半查找原理

jackxiang 2007-11-9 09:48 | |
早上在签到的时候,看到玩得好的正看一道人家答的面试题,其中一道是C语言的折半查找,呵呵。。。
来个 原理:

以升序为例

1:第一各中间值是 全部元素的个数/2(或者(元素的序数+1)/2 )

2:判断你所要的值和这个中间值的大小

如果大,那么就是 (第一次中间值序数+1 + 末尾元素序数)/2

如果小,那么就是 (第一次中间值序数-1 + 首元素序数(通常是0))/2

这样逐步缩小范围

3:而后如果出现

比中间值小(这一轮的中间值),但是比上一步中间值大(上一轮的中间值)

那么, 新的中间值序数=((上轮中间值序数)+(这轮中间值序数))/2


如果是降序,则反之

这个折半查找法的思想 和 微积分中间的中值定理的思维有点像

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/750/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2007-11-9 15:27
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]