今天写二分代码的时候,我计算mid使用移位
int mid = (low + high) >> 1;
没想到这次 low+high
的值可能会超过 int 最大范围,因此得更改写法
int mid = low + (high - low) >> 1;
然后发现程序死循环了,我写成下面的形式就没问题
int mid = low + (high - low) / 2;
然后我意识到移位运算符得优先级低于加法,也就是说应该写成下面形式
int mid = low + ((high - low) >> 1);