dtdt·11년 전·discussThe latter two suggested fixes are also incorrect for arrays of length > INT_MAX where the goal element is close to the end, there won't be any out of bounds array access though.For example, when low is 0x70000002, high is 0x90000000 int mid = (low + high) >>> 1; and mid = ((unsigned int)low + (unsigned int)high)) >> 1; will both have mid as 1 due to unsigned int overflow.
For example, when low is 0x70000002, high is 0x90000000
and
will both have mid as 1 due to unsigned int overflow.