1
2 public int rank(final Key key) {
3 int lo = 0, hi = N-1;
4 while (lo <= hi) {
5 int mid = lo + (hi - lo) / 2;
6 int cmp = key.compareTo(keys[mid]);
7 if (cmp < 0) {
8 hi = mid - 1;
9 } else if (cmp > 0) {
10 lo = mid + 1;
11 } else {
12 return mid;
13 }
14 }
15 return lo;
16 }
Notes:
- Line 5 is same as: mid = (lo + hi) / 2;
- Line 15: lo is returned!