您的位置:首页 > 其它

关于二分法查找

2014-11-26 23:04 232 查看
今天在《C++ Primer》第五版page101上看见一个问题:

在二分法搜索中为什么用的是 mid = beg + ( end - beg ) /2 而非 mid = ( beg + end ) / 2  ?

从我原先的思维,去两个数的中间值确实是两数相加除以二,所以想了好一会儿也没想明白,无奈之下只好求助google了……

1. beg+end有溢出风险,而end-beg则没有;

2.从分步逻辑来看,beg + ( end - beg ) /2 表示的是”基址 + 增量/2“,而 beg + end 没有明确的意义

3.对指针和迭代器通用性更强

目前了解到的就是以上几种原因了,原来要考虑的东西有这么多,看来学习的路途任重而道远啊……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: