binarySearch<T> function

int binarySearch<T>(
  1. List<T> sortedList,
  2. T value, {
  3. int compare(
    1. T,
    2. T
    )?,
})

Implementation

int binarySearch<T>(
  List<T> sortedList,
  T value, {
  int Function(T, T)? compare,
}) {
  compare ??= _defaultCompare<T>();
  int min = 0;
  int max = sortedList.length;
  while (min < max) {
    int mid = min + ((max - min) >> 1);
    T element = sortedList[mid];
    int comp = compare(element, value);
    if (comp == 0) {
      return mid;
    } else if (comp < 0) {
      min = mid + 1;
    } else {
      max = mid;
    }
  }
  return -(min + 1);
}