中间值为什么为l+(r-l)/2,而不是(l+r)/2
二分法的算法中,我们看到一些代码里取中间值:
MID=l+(r-l)/2;
为什么是这个呢?不就是(l+r)/2吗?为什么要多此一举呢?
其实还是有不一样的,看看他们的区别吧:
-
l,r是指针的时候只能用后一种
-
当l=-200,r=-99时
(l+r)/2=-149
l+(r-l)/2 =-150
-
(l+r)/2可能溢出,l+(r-l)/2 而不会
本文转自水郁小姐~~http://www.cnblogs.com/flipped/p/4991658.html