C++ primer(第五版) 练习 3.26 个人见解

来源:互联网 发布:婚姻记录查询软件 编辑:程序博客网 时间:2024/06/05 04:42

C++ primer(第五版) 练习 3.26

题目:在100页的二分搜索程序中,为什么用的是 mid=beg+(end-beg)/2,而非mid = (beg+end)/2; ?


书上的二分搜索程序代码如下:

//text 为有序序列
//beg 和 end表示我们的搜索范围

auto beg = text.begin(), end = text.end();auto mid = text.begin()+(end-beg)/2;while(mid != end && *mid != sought){if(sought<*mid)end=mid;elsebeg=mid+1;mid=beg+(end-beg)/2;}


答:

个人认为以下图片(图片比较丑)可以解释这个:



0 0
原创粉丝点击