Comment Comment by dtdt The 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. parent dtdt 11 years ago
For example, when low is 0x70000002, high is 0x90000000
and will both have mid as 1 due to unsigned int overflow.