bsearch<T> method

T? bsearch<T>(
  1. T key,
  2. List<T> base,
  3. int compar(
    1. T a,
    2. T b
    )
)

Performs a binary search on a sorted array (list). Returns the matching element, or null if not found.

Implementation

T? bsearch<T>(T key, List<T> base, int Function(T a, T b) compar) {
  int min = 0;
  int max = base.length - 1;
  while (min <= max) {
    int mid = min + ((max - min) >> 1);
    int cmp = compar(key, base[mid]);
    if (cmp == 0) return base[mid];
    if (cmp < 0) {
      max = mid - 1;
    } else {
      min = mid + 1;
    }
  }
  return null;
}