中间值为什么为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

posted @ 2016-02-14 23:12  么么哒小鬼  阅读(514)  评论(0编辑  收藏  举报