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

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton