起因是看到了题解里的一串代码
int mid = ((right - left) >> 1) + left;
然后这种右移除法我没看懂,因为我脑子里还有一种写法:
(left + (right - left) / 2);
但运行下来,这两种是有差别的,当 left 和 right 之间差值非常大,那么/2的写法将会比 left 要打而不一定小于 left + right ,这可能导致中间索引溢出到右边,而>>1的写法,可以保证中间索引不会溢出,因为 >>1 操作相当于除以2,然后加上left ,中间索引一定小于left+right