int binarySearch()

in lib/src/utils.dart [13:29]


int binarySearch(List list, bool Function(dynamic) matches) {
  if (list.isEmpty) return -1;
  if (matches(list.first)) return 0;
  if (!matches(list.last)) return list.length;

  var min = 0;
  var max = list.length - 1;
  while (min < max) {
    var half = min + ((max - min) ~/ 2);
    if (matches(list[half])) {
      max = half;
    } else {
      min = half + 1;
    }
  }
  return max;
}