public static int unsignedBinarySearch(final short[] array, final int begin, final int end,
      final short k) {
    if (USE_HYBRID_BINSEARCH) {
      return hybridUnsignedBinarySearch(array, begin, end, k);
    } else {
      return branchyUnsignedBinarySearch(array, begin, end, k);
    }
  }
public static int unsignedBinarySearch ( final short [ ] array , final int begin , final int end , final short k ) { if ( USE_HYBRID_BINSEARCH ) { return hybridUnsignedBinarySearch ( array , begin , end , k ) ; } else { return branchyUnsignedBinarySearch ( array , begin , end , k ) ; } }
Look for value k in array in the range [begin,end). If the value is found, return its index. If
not, return -(i+1) where i is the index where the value would be inserted. The array is assumed
to contain sorted values where shorts are interpreted as unsigned integers.

@param array array where we search
@param begin first index (inclusive)
@param end last index (exclusive)
@param k value we search for
@return count