二分法的算法中,我们看到一些代码里取中间值:

  MID=l+(r-l)/2;

为什么是这个呢?不就是(l+r)/2吗?为什么要多此一举呢?

其实还是有不一样的,看看他们的区别吧:

  • l,r是指针的时候只能用 l+(r-l)/2

  • 当l=-200,r=-99时
    (l+r)/2=-149
    l+(r-l)/2 =-150

  • (l+r)/2可能溢出,l+(r-l)/2 而不会

  注意:如果/2写成>>1的话,要括号!!!MID=l+((r-l)>>1);不然就错了,>>的优先级别比较低。

相关文章:

  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-13
  • 2022-12-23
  • 2021-04-28
  • 2022-01-05
  • 2022-12-23
  • 2022-01-03
  • 2022-01-15
相关资源
相似解决方案