二分区间可以是左闭右开,或者都闭也行。
如果是都闭,判断条件是while(L<R)。如果是L+1,那么就需要mid=L+(R-L)/2,靠近L一点。如果是R-1,就注意要mid=L+(R-L+1)/2,靠近R一点。这样做是为了避免出现区间[a,a+1]出现死循环问题。
总之二分的条件很灵活,判断条件也可以是L<R-1,L和R也可以都等于mid,还是要看情况,只要避免死循环就行了。
如果二分浮点型的就不会出现这样的问题。
二分区间可以是左闭右开,或者都闭也行。
如果是都闭,判断条件是while(L<R)。如果是L+1,那么就需要mid=L+(R-L)/2,靠近L一点。如果是R-1,就注意要mid=L+(R-L+1)/2,靠近R一点。这样做是为了避免出现区间[a,a+1]出现死循环问题。
总之二分的条件很灵活,判断条件也可以是L<R-1,L和R也可以都等于mid,还是要看情况,只要避免死循环就行了。
如果二分浮点型的就不会出现这样的问题。