previous | start | next

Binary Search

Instead of examining every array element (e.g., when item is not found), binary search will examine many fewer items.

For example, if there are 1024 keys, linear search for an item not in the array will examine all 1024 keys. Binary search, will examine only about 10 keys.

However, for the array must be sorted!

public int rank(int[] keys, int item)
{
  int lo = 0;
  int hi = keys.length - 1;

  while(lo <= hi) {
    int mid = (lo + hi) / 2;
    if ( keys[mid] == item ) {
      return mid;
    } else if ( item < keys[mid] ) {
      hi = mid - 1;
    } else {
      lo = mid + 1;
    }
  }
  return -1;
}


previous | start | next